활동학습
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값으로 문제점을 대략이나마 파악할 수 있을 것 같다.