활동학습 https://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=9aefa2f20c11923a06c9a6a0d7408182&targetDt=20120101 # API 호출해보기 - 한국영화진흥위원회의 오픈 API(https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do)를 활용합니다. - Postman 앱을 통해 영화목록 API를 호출하여 결과를 확인해봅니다 (GET 메서드 활용) - API 문서에 표시된 다양한 매개변수를 적용하여 호출 결과를 확인해봅니다 - Postman이 우리를 대신해서 만들어준 URL의 모습은 결과적으로 어떘나요? - JSON데이터를 통해 데이터를 전달받다보니 무슨 데이터를 담고있는지 한눈에 확인할 수 있었다. - 2022년 11월 9일 날짜로 조회하기위해 `targetDt`값을 20221109로 주었고, 한개의 아이템만 확인하기위해 `itemPerPage`값을 1로 주었다. ```JSON { "boxOfficeResult": { "boxofficeType": "일별 박스오피스", "showRange": "20221109~20221109", "dailyBoxOfficeList": [ { "rnum": "1", "rank": "1", "rankInten": "11", "rankOldAndNew": "OLD", "movieCd": "20226254", "movieNm": "블랙 팬서: 와칸다 포에버", "openDt": "2022-11-09", "salesAmt": "1920436277", "salesShare": "86.0", "salesInten": "1907584277", "salesChange": "14842.7", "salesAcc": "1933288277", "audiCnt": "184050", "audiInten": "183294", "audiChange": "24245.2", "audiAcc": "184806", "scrnCnt": "2571", "showCnt": "9612" } ] } } ``` - URL에서 매개변수는 어떻게 표현하나요? - 쿼리스트링을 통해 표현한다. - 주소 값의 `?` 뒤에 `키 = 밸류` 형태로 이어지며 `&`를 구분자로 사용해 여러가지 값을 넣을 수 있다. - `주소값?키=밸류&키=밸류` # Request - HTTP 요청의 핵심요소에 대해서 알아봅시다. ## method - GET 은 언제 어떻게 사용하나요? - 데이터를 조회할 때 - POST 는 언제 어떻게 사용하나요? - 데이터를 추가, 수정, 삭제 - PUT 은 언제 어떻게 사용하나요? - 데이터의 수정이 필요할때 (정확히는 교체, 대체) - PATCH 는 언제 어떻게 사용하나요? - 데이터의 부분적인 수정 - DELETE 는 언제 어떻게 사용하나요? - 데이터를 삭제할 때 - 위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다. - request-query - GET 요청을 보낼때 주소 값의 ? 뒤에 매개변수와 값을 작성하여 요청을 보내는 것 &을 구분자로 사용해 여러개의 데이터를 보낼 수 있다. - request-body(payload) - XML, JSON, Multi Form 등의 데이터를 담는다. - header - 클라이언트, 서버가 요청 또는 응답으로 부가적인 정보 담아 보낸다. - Content-Type 은 무엇인가요? - 보내는 자원의 형식을 명시하기 위해 헤더에 실리는 body의 타입에 대한 정보 이다. - 파일을 전송할때 주로 사용하는 Content-Type 은 무엇인가요? - Content-Type: multipart/form-data - Response - HTTP 응답의 핵심요소에 대해서 알아봅시다. - status - 응답에 대한 상태코드, HTTP버전, 응답에 대한 텍스트 - header - 응답에 대한 부가적인 정보를 표시하는 부분 - body - 응답받는 데이터를 표시하는 부분 ## HTTP Status - 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 요청에 대한 정상적인 처리가 이루어졌을때 반환하는 status 값 - 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 클라이언트에서 잘못된 요청을 보냈을 때 반환하는 status 값 - 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다. - 서버에서의 오류 - 위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다. - 가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요? - 요청이 성공적으로 수행했다는 코드인 200 코드를 반환한다. - 인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? - 인증이 필요함을 알려주는 401코드를 반환한다. - 잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요? - 리소스가 없다는 뜻으로 잘못된 접근, 존재하지 않는 경로를 뜻하는 404코드를 반환한다. - 서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요? - 서버에서 반환하는 오류로 500번대 코드 모두 서버에 대한 오류를 반환한다 - status 를 통해서 얻을수 있는 이점은 무엇일까요? - status를 통해 문제를 파악할 수 있는 이점이 있을 것 같다. - 400번대 에러의 경우 클라이언트 에러, 500번대 에러의 경우 서버의 에러이니 status값으로 문제점을 대략이나마 파악할 수 있을 것 같다.