---
# System prepended metadata

title: API 호출해보기

---

활동학습

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