기록이 힘이다.

[HTTP 완벽가이드] 3. HTTP 메시지 본문

IT서적

[HTTP 완벽가이드] 3. HTTP 메시지

dev22 2023. 12. 14. 21:16
728x90

메서드

메서드 설명 메시지 본문이 있는가?
GET 서버에서 어떤 문서를 가져온다.  없음
HEAD  서버에서 어떤 문서에 대해 헤더만 가져온다. 없음
POST 서버가 처리해야 할 데이터를 보낸다. 있음
PUT 서버에 요청 메시지의 본문을 저장한다. 있음
TRACE 메시지가 프락시를 거쳐 서버에 도달하는 과정을 추적한다. 없음
OPTIONS 서버가 어떤 메서드를 수행할 수 있는지 확인한다. 없음
DELETE 서버에서 문서를 제거한다. 없음

 

위와 같은 사유로 인해 코드를 짤 때 , POST의 경우로 controller에서 다음과 같은 처리를 한다.

@ResponseBody

 

상태코드

전체범위 정의된 범위 분류
100-199 100-101 정보
200-299 200-206 성공
300-399 300-305 리다이렉션
400-499 400-415 클라이언트 에러
500-599 500-505 서버 에러

 

상태코드 사유 구절 의미
200 OK 요청은 정상이고, 엔티티 본문은 요청된 리소스를 포함하고 있다.
201 Created 서버 개체를 생성하라는 요청(PUT)을 위한 것. 객체 생성
202 Accepted 요청은 받아들여졌으나 서버는 아직 그에 대한 어떤 동작도 수행하지 않았다. 
203 Non-Authoritative Information 엔터티 헤더에 들어있는 정보가 원래 서버가 아닌 리소스의 사본에서 왔다. 
204 No Content 응답 메시지는 헤더와 상태줄을 포함하지만 엔터티 본문은 포함하지 않는다. (폼 리프래스 사용)
205 Reset Content 주로 브라우저를 위해 사용되는 하나의 코드
206 Partial Content 부분 혹은 범위 요청이 성공했다. Content-Rage와 Date 헤더를 반드시 포함, Etag와 Content-Location 중 하나의 헤더도 반드시 포함
300 Multiple Choices 클라이언트가 동시에 여러 리소스를 가리키는 URL을 요청한 경우, 그 리소스의목록과 함께 반환한다. 
301 Moved Permanently 요청한 URL이 옮겨졌을 때 사용한다. 
302 Found 301 상태 코드와 같다. 그러나 클라이언트는 Location헤더로 주어진 URL을 리소스를 임시로 가리키기 위한 목적으로 사용해야 한다.
303 See Other 클라이언트에게 리소스를 다른 URL에서 가져와야 한다고 말해주고자 할 때 쓰인다. POST 요청에 대한 응답으로 클라이언트에게 리소스의 위치를 알려주는 것
304 Not Modified  클라이언트는 헤더를 이용해 조건부 요청을 만들 수 있다. 엔티티 본문을 가져서는 안된다.
305 Use Proxy  리소스가 반드시 프락시를 통해서 접근되어야 함을 나타내기 위해 사용한다. 프락시의 위치는 Location 헤더를 통해 주어진다. 
306 (사용되지 않음) 현재는 사용되지 않는다. 
307 Temporary Redirect 301 상태 코드와 비슷하다. 그러나 클라이언트는 Location 헤더로 주어진 URL을 리소스를 임시로 가리키기 위한 목적으로 사용해야 한다. 이후의 요청에서는 원래 URL을 사용해야 한다. 
400 Bad Request 클라이언트가 잘못된 요청을 보냈다고 말해준다. 
401 Unauthorized 리소스를 얻기 전에 클라이언트에게 스스로 인증하라고 요구하는 내용의 응답을 적절한 헤더와 함께 반환한다.
402 Payment Required 현재 이 상태 코드는 쓰이지 않지만, 미래에 사용될 가능성을 위해 준비
403 Forbidden 요청이 서버에 의해 거부되었음을 알려주기 위해 사용한다. 
404 Not Found 서버가 요청한 URL을 찾을 수 없음을 아렬주기 위해 사용한다. 
405 Method No Allowed 요청한 URL에 대해, 지원하지 않는 메서드로 요청받았을 때 사용한다. 
406  Not Acceptable 클라이언트는 자신이 어떤 종류의 엔티티를 받아들이고자 하는지에 대해 매개변수로 명시할 수 있다.
407 Proxy Authentication Required 401 상태 코드와 같으나, 리소스에 대해 인증을 요구하는 프락시 서버를 위해 사용한다.
408 Request Timeout 클라이언트의 요청을 완수하기에 시간이 너무 많이 걸리는 경우, 연결을 끊을 수 있다.
409 Conflict 요청이 리소스에 대해 일으킬 수 있는 몇몇 충돌을 지칭하기 위해 사용한다.
410 Gone 404와 비슷하나, 서버가 한때 그 리소스를 갖고 있었다는 점이 다른다. 
411 Length Required 서버가 요청 메시지에 Content-Length 헤더가 있을 것을 요구할 때 사용한다.
412 Precondition Failed 클라이언트가 조건부 요청을 했는데 그중 하나가 실패했을 때 사용한다. 
413 Request Entity Too Large 서버가 처리할 수 있는 혹은 처리하고자 하는 한계를 넘은 크기의 요청을 클라이언트가 보냈을 때 사용한다.
414 Reqeust URI Too Long 서버가 처리할 수 있는 혹은 처리하고자 하는 한계를 넘은 길이의 요청 URL이 포험된 요청을 클라이언트가 보냈을 때 사용한다.
415 Unsupported Media Type 서버가 이해하거나 지원하지 못하는 내용 유형의 엔티티를 클라이언트가 보냈을 때 사용한다.
416 Requested Range Not Satisfiable 요청 메시지가 리소스의 틀정 범위를 요청했는데, 그 범위가 잘못되었거나 맞지 않을 때 사용한다.
417 Expectation Failed 요청에 포함된 Expect 요청 헤더에 서버가 만족시킬 수 없는 기대가 담겨있는 경우 사용한다. 
500 Internet Server Error 서버가 요청을 처리할 수 없게 만드는 에러를 만났을 때 사용한다.
501 Not Implemented 클라이언트가 서버의 능력을 넘은 요청을 했을 때 사용한다. 
502 Bad Gateway 프락시나 게이트웨이처럼 행동하는 서버가 그 요청 응답 연쇄에 있는 다음 링크로부터 가짜 응답에 맞닥뜨렸을 때 사용한다. 
503 Service Unavailable  현재는 서버가 요청을 처리해 줄 수 없지만 나중에는 가능함을 의미하고자 할 때 사용한다. 
504 Gateway Timeout 상태 코드 408과 비슷하지만, 다른 서버에게 요청을 보내고 응답을 기다리다 타임아웃이 발생한 게이트웨이나 프락시에서 온 응답이라는 점이 다른다.
505 HTTP Version Not Supported 서버가 지원할 수 없거나 지원하지 않으려고 하는 버전의 프로토콜로 된 요청을 받았을 때 사용한다.