HTTP 상태 코드
1xx (정보)
- 서버가 요청을 잘 받았으며 해당 프로세스를 계속 이어가며 처리하는 것을 의미
2xx (성공)
- 서버가 요청을 잘 받았고 이를 기반으로 클라이언트에서 성공적으로 데이터를 보낸 것을 의미
- 200 OK : 요청이 성공적으로 되었습니다.
- 201 Created : 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다.
3xx (리다이렉션)
- 서버가 클라이언트의 요청에 대해 완료를 위해 추가 작업 조치가 필요합니다.
- 301 Moved Permanently : 이 응답코드는 요청한 리소스의 URI 가 변경되었음을 의미한다. 변경된 새로운 URI를 301 상태코드와 함께 주어야 한다.
4xx (클라이언트 오류)
- 클라이언트가 요청한 페이지를 제공할 수 없거나 클라이언트의 요청이 잘못되어 결과적으로 요청을 처리할 수 없다.
- 400 Bad Request : 서버가 클라이언트 요청을 이해할 수 없음을 의미
- 401 Unathorized : 클라이언트의 인증이 되지 않음을 의미
- 404 Not found : 요청받은 컨텐츠를 찾을 수 없다는 것을 의미
5xx (서버 오류)
- 서버가 클라이언트의 요청을 처리하지 못하는 상태
- 500 Internal Server Error : 서버에 오류가 있음을 의미
- 502 Bad Gateway : 게이트웨이 또는 프록시서버가 오류가 생겼음을 의미
- 504 Gateway Timeout : 게이트웨이 또는 프록시서버가 정해진 Timeout 시간동안 클라이언트의 요청을 처리하지 못함을 의미
더 많은 상태코드는 https://ko.wikipedia.org/wiki/HTTP상태코드 에서 확인 가능
HTTP 메서드
웹 서버와 클라이언트 간에 데이터 요청과 응답을 주고받을 때 사용되는 명령어
- GET
- POST
- PUT
- HEAD
- DELETE
- PATCH
- OPTIONS
- CONNECT
- TRACE
GET과 POST의 차이
GET : 데이터를 읽다

- url을 기반으로 데이터를 요구하는 방법
- url을 기반으로 하기 때문에 길이 제한이 있다.
- 성공 시 HTTP 상태코드 200을 반환한다.
- 캐싱이 가능하다
- url을 기반으로 요청하기 때문에 해당 요청의 파라미터가 브라우저 기록에 남는다.
- url을 기반으로 요청하기 때문에 요청할 때 ASCII 문자열만을 보낼 수 있다.
- 사용자 이름, 비밀번호 등 민감한 정보를 전달할 때 사용하지 않는다.
POST : 데이터를 생성하다.

- url이 아닌 HTTP message body를 통해 데이터를 전달
- HTTP message body를 통해 전달되기 때문에 길이 제한이 없다.
- 성공적으로 데이터를 생성할 경우 HTTP 상태코드 201을 반환한다. (생성한 경우 201, 생성하지 않은 경우 200을 반환하기도 한다.)
- 캐싱이 불가능함
- url을 기반으로 요청하지 않기 때문에 해당 요청의 파라미터가 브라우저 기록에 남지 않음
- HTTP message body로 요청하기 때문에 ASCII 문자열 뿐만 아니라 모든 유형의 데이터를 기반으로 요청할 수 있음
- 사용자 이름, 비밀번호 등 민감한 정보를 전달할 때 사용
차이점 정리
- 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용한다.
- DB로 따지면 GET은 SELECT에 가깝고, POST는 CREATE에 가깝다고 보면 됨
PUT과 PATCH의 차이
둘 다 데이터를 수정할 때 쓰는 메서드
PUT : 업데이트하는 데이터의 전체를 보낸다.
- 요청을 보낼 때 해당 데이터 전체를 보내야 하고 전체 데이터의 교체를 의미함
- 해당 데이터가 없다면 새로 생성하고 있다면 요청할 때 보낸 데이터와 교체를 진행
- 사용자 정보를 업데이트하거나 파일을 업로드 할 때
PATCH : 업데이트하는 데이터의 일부를 보내다.
- 요청을 보낼 때 수정하는 일부분만 보내면 되고 일부분의 교체를 의미함
- 댓글 시스템에서 사용자가 댓글의 내용을 수정할 때