이번 유닛을 통해 외부 데이터를 어떻게 받아올 수 있는지 알 수 있었다. 코딩을 접한 이후로, 시중의 사이트와 어플들은 어디서, 어떻게 데이터를 받아오는지 항상 궁금했는데 그 부분을 알고 나니 조금 더 개발자라는 직군과 가까워진 기분이다. 이제 인터넷의 다양한 데이터를 활용해 내가 원하는 대로 조리해 볼 수 있어 기쁘다🤓
Chapter1. REST API
-1. REST API 디자인
-2. REST 성숙도 모델 - 0단계
-3. REST 성숙도 모델 - 1단계
-4. REST 성숙도 모델 - 2단계
-5. REST 성숙도 모델 - 3단계
-6. Open API와 API Key
Chapter2. Postman
-1. Postman 사용하는 방법
-2. Postman으로 API 테스트하기
-3. Postman으로 날씨 받아오기
1) REST API란
=Representational State Transfer API
웹에서 사용되는 데이터나 리소스를 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
-기업이 제시한 REST API 가이드라인
구글: https://cloud.google.com/apis/design/resources?hl=ko
마이크로소프트: https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md
2) REST API를 잘 적용하기 위한 4단계 모델
로이 필딩 -> 모든 단계를 충족해야 좋은 API 디자인 -> REST API
일반적으로 -> 2단계까지만 적용해도 좋은 API 디자인 -> HTTP API
: HTTP 프로토콜 사용, REST API X
요청: 개별 리소스에 맞는 엔드포인트를 사용
응답: 사용한 리소스에 대한 정보+리소스 사용에 대한 성공/실패 여부를 반환
예약 가능한 시간 확인 요청으로 받게 되는 응답 -> 의사 허준의 예약 가능 시간대 -> /doctor/허준
특정 시간에 예약 요청으로 받게 되는 응답 -> "slots" 리소스의 id가 123인 리소스 변경 -> /slots/123
주의. 엔드포인트 작성 시
❌동사, HTTP 메서드, 어떤 행위에 대한 단어 사용
✅리소스에 집중해 명사 형태의 단어로 작성
: CRUD에 맞게 적절한 HTTP 메서드를 사용
예약 가능한 시간 확인 -> READ -> GET 메서드 사용
특정 시간에 예약 -> CREATE -> POST 메서드 사용
GET 메서드 -> body 없으므로 query parameter 사용
POST 메서드
-> 새롭게 생성된 리소스를 보내줘야 하므로 응답 코드 작성(201 Created)
-> 관련 리소스를 클라이언트가 확인할 수 있어야 하므로 URI 작성(Location)
1) HTTP 메서드 규칙
-GET: 서버의 데이터를 변화시키지 않는 요청에 사용
-POST: 요청마다 새로운 리소스 생성(멱등성X)
-PUT: 교체할 경우 사용, 요청마다 같은 리소스 반환(멱등성O, idempotent)(전체 교체, 전체 데이터 전송)
-PATCH: 수정할 경우 사용(부분 수정, 수정할 부분만 전송)
참고. 멱등성과 안전
Idempotence: 멱등성(동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때)
Safety: 안전(HTTP 메서드는 서버의 상태를 변경하지 않는 경우)
: 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성(HATEOAS 원칙 준수)
예약 가능한 시간 확인 요청의 응답-> 예약 링크 삽입
특정 시간대 예약 요청의 응답 -> 예약 확인 링크 삽입
1) Open API
: 누구에게 열려있는 API/가격, 정보 제한이 있을 수 있음
-제공받을 수 있는 사이트: https://www.data.go.kr/
2) API Key
:API를 이용하기 위한 키/필요하지 않은 경우도 있음
Postman 사이트: https://www.postman.com/
1) POST 요청 시
body-raw 체크, JSON으로 변경
1) 방법
API Keys 발급 후 API 문서대로 하기
Open Weather 사이트: https://openweathermap.org/
2) 다른 연습 사이트
도로공사 Open API: http://data.ex.co.kr/openapi/basicinfo/openApiInfoM?apiId=0102&pn=-1
공공데이터 Open API: https://www.data.go.kr/iim/api/selectAPIAcountView.do#layer-api-guide
참고 사이트: https://blog.restcase.com/5-basic-rest-api-design-guidelines/
-> 12개(? 뒤부터 query parameter)