### Request - Http 요청의 핵심요소에 대해서 알아봅시다.
#### method
GET 은 언제 어떻게 사용하나요?
- 요청한 데이터 받기
- 데이터 조회할 때 사용한다
- URL에 데이터가 표시
- 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 데이터를 저장시켜 놓기 때문에 POST보다 빠름
- 1024 바이트 이상 전송할 수 없다
https://xengom.com/restapi/post-put-patch/
POST 는 언제 어떻게 사용하나요?
- 데이터 보내기
- 식별자(Identifier) 없이 Data가 들어오면 새 식별자를 생성하고 데이터를 생성(등록)할 때 사용한다
- 메시지 Body에 데이터 담아서 보낸다
- 예) 중복 허용하는 경우, 새 것 추가
PUT 은 언제 어떻게 사용하나요?
- Data가 들어왔을 때 식별자가 존재하면 해당 리소스를 업데이트(Replace)한다. -> Idempotent
- Data가 들어왔을 때 식별자가 존재하지 않으면 새 식별자를 생성하고 Data를 등록한다.
- 예) 유일하게 한 데이터만 있도록(중복 없이)
PATCH 는 언제 어떻게 사용하나요?
- PATCH는 POST와 PUT을 섞음
- Data가 들어왔을 때 식별자가 존재하면 해당 리소스를 업데이트(부분 update)한다.
- Data가 들어왔을 때 식별자가 존재하지 않으면 Exception이 터진다.
- 예) 데이터가 확실히 있을 때 업데이트 하려는 경우
DELETE 는 언제 어떻게 사용하나요?
- 삭제
---
위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다.

request-query:
Query String으로 서버에게 요청하는 것
`/users?id=123`
cf. 다른 방식은 Path value `/users/123`
request-body(payload): 보내고자 하는 데이터 자체
header: HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해준다.
* Content-Type 은 무엇인가요?
클라이언트에서 서버에게 요청에서 데이터의 형식
* 파일을 전송할때 주로 사용되는 Content-Type 은 무엇인가요?
MIME 타입
---
### Response - HTTP 응답의 핵심요소에 대해서 알아봅시다.
### HTTP Status
* 200, 201 , 202, 204 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
200(성공): 서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.
201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스를 작성했다.
202(허용됨): 서버가 요청을 접수했지만 아직 처리하지 않았다.
203(신뢰할 수 없는 정보): 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있다.
204(콘텐츠 없음): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않는다.
* 400 , 401 , 403 , 404 , 406 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
400 Bad Request 요청 실패. 문법상 오류가 있어서 서버가 요청사항을 이해하지 못함,
401(권한 없음): 이 요청은 인증이 필요하다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다. 상태 코드 이름이 권한 없음(Unauthorized)으로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가깝다.[2]
402(결제 필요): 이 요청은 결제가 필요합니다.
403(Forbidden, 금지됨): 서버가 요청을 거부하고 있다. 예를 들자면, 사용자가 리소스에 대한 필요 권한을 갖고 있지 않다. (401은 인증 실패, 403은 인가 실패라고 볼 수 있음)
404 Not Found 문서를 찾을 수 없음. 서버가 요 청한 파일이나 스크립트를 찾지 못함.
406 Not Acceptable 받아들일 수 없음
* 500 , 502 , 504 상태 코드가 각각 무엇을 의미하는지 알아봅시다.
500 Internal Server Error 서버 내부 오류
502 Bad gateway 게이트웨이 상태 나쁨
504 Gateway timeout 프록시나 게이트웨이의 역할을 하는 서버에서 볼 수 있음. 초기 서버가 원격 서버로부터 응답을 받을 수 없음. (HTTP 1.1에서 새로 등장)
---
위의 질문들을 올바르게 살펴봤다면, 아래의 내용들이 무엇인지 설명할 수 있습니다.
가장 기본적인 성공 요청 응답의 status 코드는 무엇일까요?
* 200
인증 또는 권한등의 오류에 대해서 주로 사용되는 status 코드는 무엇일까요?
* 401
잘못된 접근, 존재하지 않는 경로에 대한 접근에 주로사용되는 status 코드는 무엇일까요?
* 404
서버측 오류에 대해서 주로 사용되는 status 코드는 무엇일까요?
* 500
---
status 를 통해서 얻을수 있는 이점은 무엇일까요?
* 5개의 클래스(분류)로 구분되어 요청에 대한 결과 확인 용이, 오류 해결이 편하다.
* 1xx (정보): 요청을 받았으며 프로세스를 계속한다
* 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
* 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
* 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
* 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
URL / URI
URL 과 URI에 대해서 알아봅시다.

> URI는 식별하고, URL은 위치를 가르킨다.