전 시간엔 HTTP 메소드를 사용해 클라이언트가 서버에게 'CRUD' 명령을 내릴 수 있었다. 또 명령을 전달하는 방식에 따른 '프로토콜'로 전송했다. 그렇다면 요청과 응답을 할 때 어떠한 방식으로 작성해야할까? 여기도 '정해진 규칙'이 있어 바람직한 방법으로 전달 내용을 작성할 수 있다. 그걸 배워보자!
노마드코더
구글 REST API 규칙
REST API는 Representational State Transfer의 약자로 로이 필딩이 웹의 장점을 최대로 활용한 아키텍쳐로 소개됐음
웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
우리는 HTTP 기반 프로토콜 하에서 작성해 보내야됨, 그래서 HTTP 기반 API를 사용해야 알아보기 쉽고, 제대로 활용할 수 있음
레오나르드 리차드슨이라는 사람이 성숙도에 따라 4단계로 구분하여 REST API를 발전시켰다. 3단계까지 가면 이상적인 API라고 하지만 실제로는 어려워 2단계까지면 HTTP API라고 부르고 좋은 API라고 볼 수 있다.
HTTP 주소 사용
성숙도에 따르면 단순히 HTTP 주소만 사용해도 0단계 달성임!HTTP 프로토콜을 사용하고 있어 0단계 충족된 모습
맞는 엔드포인트 작성 등 개별 리소스(Resource)와의 통신을 준수
+ 엔드포인트는 그냥 우리가 어떤 명령을 입력하기 위해 쓰는 Path+Query 합쳐 만든 키워드 같은 거
앞선 0단계 요청에선 엔드포인트를 /appoinment
로 사용했음, 하지만 1단계에선 요청하는 리소스에 따라 엔드포인트를 설정해주는 것임!@위 사진에선 주치의로 허준을 선택했으니 엔드포인트를 /doctors/허준
으로 정했고 예약은 그 날짜의 시간대를 특정하는 거니 그 시간대 id인 /slots/123
를 엔드포인트로 잡았음
즉! 어떤 리소스를 변화하고 어떤 응답을 받는지에 따라 엔드포인트가 달라지니 적절한 엔드포인트를 설정하자! 그러므로 ⭐️리소스에 집중해야하니 엔드포인트 작성시에는 명사 형태로 리소스에 관련되게 쓰자!
또 각 리소스를 사용하는데 실패하는 것도 써주면 더욱 바람직하다! 위 사진은 실패했을때 관련된 엔드포인트를 명명하고 그에 대한 응답을 작성한 사진임
CRUD에 맞는 HTTP 메소드 사용
201 Created
라고 정확히 명시해야하고, 관련 리소스를 Location
헤더에 작성된 URI를 클라이언트가 확인 가능하면 조건 충족!HATEOAS라는 하이퍼미디어 컨트롤을 적용, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야함
오픈소스같이 말 그대로 누구나 쓸 수 있는 API임, 하지만!! 정해진 수칙과 일정 이상 사용 시 가격, 정보 제한 등의 제한사항이 발생할 수도 있음, 또한 API Key를 사용해야 활용할 수 있는 API도 있음
API를 GUI로 쉽게 CRUD 해올 수 있는 툴임, 원래는 CLI같은 걸로 일일이 입력했음
포스트맨으로 코스의 message states Server
에 요청해보자!
/
)가리킴/
뒤 'Path' 입력하여 Key역할을 함https://api.github.com/user
라면 user
가 Path!/kimcoding/messages
를 작성하고 GET하면?roomname=로비
인 Query 즉, URI를 작성하면이렇게 조건에 맞춰 나온다.이제 message states Server
에 내 깃헙 아이디로 읽고, 업데이트해보자.
message states Server
의 JSON에서 쓰이는 속성들message states Server
의 루트엔드포인트로 입력 후 /Rhino-ty/messages
입력하고 GET하면 기본으로 나옴body
태그로 가 body를 입력raw
선택 후 옆에 입력 언어 JSON
으로 변경서울 id와 내 날씨 API 키를 입력해 불러온 모습
22년 7월 1일 기준 박스오피스를 가져온 모습
물론 API는 백엔드가 하지만 작성법, 이용법을 알아야 우리도 서버에서 제대로 가져오고 할 수 있음! 꼭 복기하기!
잘보고가욥 :D