# HTTP 활동학습 ## API 호출해보기 * 한국영화진흥위원회의 오픈 API(https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do)를 활용합니다. * Postman 앱(https://www.postman.com)을 통해 영화목록 API를 호출하여 결과를 확인해봅니다 (GET 메서드 활용) * API 문서에 표시된 다양한 매개변수를 적용하여 호출 결과를 확인해봅니다 * Postman이 우리를 대신해서 만들어준 URL의 모습은 결과적으로 어떘나요? http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.xml?directorNm=봉준호&key=d975f8608af0d9e5a16e79768ca97127 * URL에서 매개변수는 어떻게 표현하나요? 스위프트의 옵셔널처럼 기본 요청 URL뒤에 ?를 붙인 뒤 Param의 `key = value(string)`로 표현하고 연속되는 Param이 있을 경우 `&`으로 연결하여 나타난다. ## Request - HTTP 요청의 핵심요소에 대해서 알아봅시다. ### method - GET 은 언제 어떻게 사용하나요? - 서버로부터 데이터를 취득 - POST 는 언제 어떻게 사용하나요? - 서버에 데이터를 추가, 작성 등 - PUT 은 언제 어떻게 사용하나요? - 서버의 데이터를 갱신, 작성 등 - PATCH 는 언제 어떻게 사용하나요? - 리소스의 일부를 수정 - DELETE 는 언제 어떻게 사용하나요? - 서버의 데이터를 삭제 위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다. - request-query - key = value로 이루어져 있고 &로 연결할 수 있다 - 일정 조건을 줘서 원하는 결과물을 얻을 수 있다(filtering, sorting, searching에 적절) - request-body(payload) - URL에는 보이지 않는 오브젝트 데이터 - header - Content-Type 은 무엇인가요? - HTTP 통신에서 전송되는 데이터의 타입을 나타내는 header정보 중 하나 - Content-Type에 따라 데이터를 받는 측에서는 데이터를 어떻게 처리해야 할 지 판단 - 파일을 전송할때 주로 사용하는 Content-Type 은 무엇인가요 - multipart/form-data ## Response - HTTP 응답의 핵심요소에 대해서 알아봅시다. HTTP Status - 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 200 : OK - 오류없이 전송 성공 - 201 : Created - 성공적으로 요청되었으며 서버가 새 리소스를 작성 - 202 : Accepted - 서버가 클라이언트의 요청을 수락함 - 204 : Non Content - 클라이언트의 요구를 처리했으나 전송할 데이터가 없음 - 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 400 : Bad Request - 요청 실패. 문법상 오류가 있어 서버가 요청사항을 이해하지 못한 상태 - 401 : Unauthorized - 권한 없음(접속실패) 상태. - 주어진 권한 밖의 요청을 하거나, 서버의 사용자 필터링 등에 의해 서버에 접속을 실패하는 경우 - 403 : 금지(Forbidden) 상태. - 서버의 보안 설정 등의 다양한 이유로 접근이 금지되는 경우 - 404 : 문서를 찾을 수 없는 상태. 서버가 요청한 파일이나 스크립트를 찾지 못함. - 406 : 요청을 받아들일 수 없는 상태. - 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 500 : Internal Server Error - 서버 내부 오류 - 502 : Bad gateway - 게이트웨이 상태 나쁨 - 504 : Gateway timeout - 프록시나 게이트웨이의 역할을 하는 서버에서 볼 수 있으며, 초기 서버가 원경 서버로부터 응답을 받을 수 없음 위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다. - 가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요? - 200 - 인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? - 401 - 잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요? - 404 - 서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? - 5XX - status 를 통해서 얻을수 있는 이점은 무엇일까요? - 요청에 대한 응답의 결과를 쉽게 확인할 수 있다. ## URL / URI URL 과 URI에 대해서 알아봅시다. ### URL Uniform Resource Locator(파일 식별자). 통합 자원의 **위치**를 나타내는 규약. 식별자 + 위치 접속하려면 프로토콜이 필요하다. ### URI Uniform Resource Identifier(통합 자원 식별자). 인터넷 상의 리소스 **자원 자체**를 식별하는 고유한 문자열. 식별자 ![](https://i.imgur.com/KUXZpEP.png) [참고 블로그 - 이랜서 URI, URL 차이점](https://www.elancer.co.kr/blog/view?seq=74) [참고 블로그 - Inpa Dev, URL / URI / URN](https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-URL-URI-%EC%B0%A8%EC%9D%B4)