---
# System prepended metadata

title: Untitled

---

## API 호출해보기

- 한국영화진흥위원회의 오픈 API(https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do)를 활용합니다.
- Postman 앱(https://www.postman.com)을 통해 영화목록 API를 호출하여 결과를 확인해봅니다 (GET 메서드 활용)

```json
{
    "boxOfficeResult": {
        "boxofficeType": "일별 박스오피스",
        "showRange": "20230312~20230312",
        "dailyBoxOfficeList": [
            {
                "rnum": "1",
                "rank": "1",
                "rankInten": "0",
                "rankOldAndNew": "OLD",
                "movieCd": "20226270",
                "movieNm": "스즈메의 문단속",
                "openDt": "2023-03-08",
                "salesAmt": "2894556153",
                "salesShare": "60.2",
                "salesInten": "-383917464",
                "salesChange": "-11.7",
                "salesAcc": "10483952072",
                "audiCnt": "272619",
                "audiInten": "-32728",
                "audiChange": "-10.7",
                "audiAcc": "972492",
                "scrnCnt": "1486",
                "showCnt": "6150"
            },
            // ...
            {
                "rnum": "10",
                "rank": "10",
                "rankInten": "0",
                "rankOldAndNew": "OLD",
                "movieCd": "20230200",
                "movieNm": "똑똑똑",
                "openDt": "2023-03-08",
                "salesAmt": "38634690",
                "salesShare": "0.8",
                "salesInten": "-5232478",
                "salesChange": "-11.9",
                "salesAcc": "214863427",
                "audiCnt": "3722",
                "audiInten": "-545",
                "audiChange": "-12.8",
                "audiAcc": "21685",
                "scrnCnt": "435",
                "showCnt": "804"
            }
        ]
    }
}
```

- API 문서에 표시된 다양한 매개변수를 적용하여 호출 결과를 확인해봅니다


- Postman이 우리를 대신해서 만들어준 URL의 모습은 결과적으로 어떘나요?
```
http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=Key값&targetDt=yyyy/mm/dd
```
저희는 json 타입으로 요청을해 json 형식의 결과를 받았습니다.

- URL에서 매개변수는 어떻게 표현하나요?

매개변수는 URL의 뒷부분에 `?`이후에 키-값쌍으로 표시 하며, `&`를 통해 여러 매개변수를 입력할 수 있었습니다.

## Request - HTTP 요청의 핵심요소에 대해서 알아봅시다.

- GET 은 언제 어떻게 사용하나요?
 URL에 있는 리소스를 받아오고 싶을 때

- POST 는 언제 어떻게 사용하나요?
 서버의 리소스를 생성하거나 업데이트 하기위해 사용

- PUT 은 언제 어떻게 사용하나요?
 서버에 데이터를 업데이트 한다. 이미 존재하는 데이터를 수정하는 경우 사용

- PATCH 는 언제 어떻게 사용하나요?
 리소스의 특정 부분을 수정하기 위해 사용

- DELETE 는 언제 어떻게 사용하나요?
 특정 리소스를 삭제하기 위해 사용

- request-query
 주소 이후의 `?` 이후의 파라미터를 의미함
 위 예제 기준 `key=키값&targetDt=yyyy/mm/dd`이다.

- request-body(payload)
XML, JSON, Multi Form 등의 데이터를 담으며 주소상에선 확인할 수 없다.

- header
헤더는 서버와 클라이언트 간 전송되는 데이터 패킷에 포함되는 정보를 제공한다.
이 정보는 요청 또는 응답의 내용, 크기, 타입 및 기타 유용한 정보를 나타낸다.
     - 요청 헤더
     : 클라이언트가 서버에게 전송하는 요청에 대한 정보
     - 응답 헤더
     : 서버가 클라이언트에게 전송하는 요청에 대한 정보
        

- Content-Type 은 무엇인가요?
> 해당 개체에 포함되는 미디어 타입 정보
> 
컨텐츠의 타입(MIME 미디어 타입) 및 문자 인코딩 방식(EUC-KR,UTF-8 등)을 지정한다.
타입 및 서브타입(type/subtype)으로 구성된다.


- 파일을 전송할때 주로 사용하는 Content-Type 은 무엇인가요?

 Multipart/related가 기본형태이므로 가장 많이 쓰일것 같다.

## Response - HTTP 응답의 핵심요소에 대해서 알아봅시다.

- 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(Not Found) : 문서를 찾을 수 없음
    - 406(Not Acceptable) : 요청한 컨텐츠 특성으로 응답할 수 없음
    
- 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
    - 500(Internal Server Error) : 서버 내부 오류
    - 502(Bad gateway) : 게이트웨이 상태 나쁨
    - 504(Gateway timeout) : 게이트웨이나 프록시 역할을 서버가 하고 있어 제때 요청을 받지 못했다.