---
# System prepended metadata

title: '230717 HTTP, TCP/IP 활동학습'
tags: [활동학습]

---

# API 호출해보기

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

### Postman이 우리를 대신해서 만들어준 URL의 모습은 결과적으로 어떘나요?

```text!
http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=185ffa98e537aed8c57b7e364e495904&targetDt=20230716&repNationCd=K
```

### URL에서 매개변수는 어떻게 표현하나요?
- ? 뒤에 key=value 형식으로 나열하며, 각 파라미터 항목은 & 기호로 구분합니다.

# Request

## method

### GET은 언제 어떻게 사용하나요?
- 데이터를 가져올 때(read)
- 리소스 조회

### POST 는 언제 어떻게 사용하나요?
- 새로운 데이터를 생성할 때(create)

### PUT 은 언제 어떻게 사용하나요?
- 데이터를 업데이트할 때(전체 업데이트)

### PATCH 는 언제 어떻게 사용하나요?
- 데이터를 업데이트할 때(필요한 부분만)

### DELETE 는 언제 어떻게 사용하나요?
- 데이터를 삭제할 때

### request-query
URL에서 ? 뒤에 붙여 전달되는 파라미터 정보. 각 파라미터 내용에 일치하는 데이터를 찾아야 할 경우 사용한다. filtering, sorting, searching에 적합하다. 

### request-body(payload)
클라이언트가 서버 측에 데이터를 보낼 때 사용되는 데이터로, JSON, XML 등에 담아서 전달되는 내용. GET과 DELETE에서는 사용할 수 없다.
![](https://hackmd.io/_uploads/HygA4wMch.png)
(예: 야곰 게시판에서 내용을 수정하면 해당 내용이 content에 담겨 PATCH 요청으로 가는 것이 확인됨)

### header
Accept-Language, User-Agent 등 부가적인 정보를 모아 전달하는 부분.
![](https://hackmd.io/_uploads/Hy1mQwG5h.png)

### Content-Type 은 무엇인가요?
보내는 자원의 형식을 명시하기 위해 헤더에 실리는 정보
웹 브라우저는 이것을 보고 자원을 렌더링 한다.

### 파일을 전송할때 주로 사용하는 Content-Type 은 무엇인가요?
(참고: https://yunzema.tistory.com/186)
| Content-Type | Content |
| -------- | -------- |
| application/msword | doc |
| application/pdf | pdf |
| application/vnd.ms-excel | xls |
| application/x-javascript | js |
| application/zip | zip |
| image/jpeg | jpeg, jpg, jpe |
| text/css | css |
| text/html | html, htm |
| text/plain | txt |
| text/xml | xml |
| text/xsl | xsl |
| audio/mpeg | MP3 or other MPEG audio |
| audio/x-ms-wma | Windows Media Audio |
| audio/vnd.rn-realaudio | RealAudio |
| Multipart/related | Multipart Related MIME |
| Application/X-FixedRecord | Multipart Related MIME |


# Response

## HTTP Status

### 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
- 200: OK
- 201: Created
- 202: Accepted
- 204: No Content
### 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
- 400: Bad Request
- 401: Unauthorized
- 403: Forbidden
- 404: Not Found
### 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
- 500: Internel Server Error
- 502: Service Unavailabel
- 503: Service Unavailable
- 504: Gateway Timeout

### 가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요?
- 200

### 인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요?
- 401

### 잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요?
- 404

### 서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요?
- 500

### status 를 통해서 얻을수 있는 이점은 무엇일까요?
- 서버에서 어떻게 요청이 처리 되었는지 추측할 수 있다.
- 응답 종류에 따라 어떤 처리를 해야할지 미리 정리할 수 있다.

# URL / URI
## URL 과 URI에 대해서 알아봅시다.
![](https://hackmd.io/_uploads/S1O0ZwGc2.png =200x)

### URL
- 자원이 있는 위치
- Uniform Resource Locator

### URI
- Uniform Resource Identifier = URL + URN(자원에 부여한 이름)