# API 호출해보기 > 한국영화진흥위원회의 오픈 API(https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do)를 활용합니다. Postman 앱(https://www.postman.com)을 통해 영화목록 API를 호출하여 결과를 확인해봅니다 (GET 메서드 활용) API 문서에 표시된 다양한 매개변수를 적용하여 호출 결과를 확인해봅니다 ### Postman이 우리를 대신해서 만들어준 URL의 모습은 결과적으로 어떘나요? ```text! http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=185ffa98e537aed8c57b7e364e495904&targetDt=20230716&repNationCd=K ``` ### URL에서 매개변수는 어떻게 표현하나요? - ? 뒤에 key=value 형식으로 나열하며, 각 파라미터 항목은 & 기호로 구분합니다. # Request ## method ### GET은 언제 어떻게 사용하나요? - 데이터를 가져올 때(read) - 리소스 조회 ### POST 는 언제 어떻게 사용하나요? - 새로운 데이터를 생성할 때(create) ### PUT 은 언제 어떻게 사용하나요? - 데이터를 업데이트할 때(전체 업데이트) ### PATCH 는 언제 어떻게 사용하나요? - 데이터를 업데이트할 때(필요한 부분만) ### DELETE 는 언제 어떻게 사용하나요? - 데이터를 삭제할 때 ### request-query URL에서 ? 뒤에 붙여 전달되는 파라미터 정보. 각 파라미터 내용에 일치하는 데이터를 찾아야 할 경우 사용한다. filtering, sorting, searching에 적합하다. ### request-body(payload) 클라이언트가 서버 측에 데이터를 보낼 때 사용되는 데이터로, JSON, XML 등에 담아서 전달되는 내용. GET과 DELETE에서는 사용할 수 없다. ![](https://hackmd.io/_uploads/HygA4wMch.png) (예: 야곰 게시판에서 내용을 수정하면 해당 내용이 content에 담겨 PATCH 요청으로 가는 것이 확인됨) ### header Accept-Language, User-Agent 등 부가적인 정보를 모아 전달하는 부분. ![](https://hackmd.io/_uploads/Hy1mQwG5h.png) ### Content-Type 은 무엇인가요? 보내는 자원의 형식을 명시하기 위해 헤더에 실리는 정보 웹 브라우저는 이것을 보고 자원을 렌더링 한다. ### 파일을 전송할때 주로 사용하는 Content-Type 은 무엇인가요? (참고: https://yunzema.tistory.com/186) | Content-Type | Content | | -------- | -------- | | application/msword | doc | | application/pdf | pdf | | application/vnd.ms-excel | xls | | application/x-javascript | js | | application/zip | zip | | image/jpeg | jpeg, jpg, jpe | | text/css | css | | text/html | html, htm | | text/plain | txt | | text/xml | xml | | text/xsl | xsl | | audio/mpeg | MP3 or other MPEG audio | | audio/x-ms-wma | Windows Media Audio | | audio/vnd.rn-realaudio | RealAudio | | Multipart/related | Multipart Related MIME | | Application/X-FixedRecord | Multipart Related MIME | # Response ## HTTP Status ### 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 200: OK - 201: Created - 202: Accepted - 204: No Content ### 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 400: Bad Request - 401: Unauthorized - 403: Forbidden - 404: Not Found ### 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 500: Internel Server Error - 502: Service Unavailabel - 503: Service Unavailable - 504: Gateway Timeout ### 가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요? - 200 ### 인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? - 401 ### 잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요? - 404 ### 서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? - 500 ### status 를 통해서 얻을수 있는 이점은 무엇일까요? - 서버에서 어떻게 요청이 처리 되었는지 추측할 수 있다. - 응답 종류에 따라 어떤 처리를 해야할지 미리 정리할 수 있다. # URL / URI ## URL 과 URI에 대해서 알아봅시다. ![](https://hackmd.io/_uploads/S1O0ZwGc2.png =200x) ### URL - 자원이 있는 위치 - Uniform Resource Locator ### URI - Uniform Resource Identifier = URL + URN(자원에 부여한 이름)