본문 바로가기

Development/HTTP

HTTP 메시지 - 메서드

안전한 메서드란 무엇일까 ? 


결론과 예를 말하자면, GET과 HEAD는 안전하다고 말할 수 있다. 그 이유는 클라이언트가  서버로 GET, HEAD를 요청 한다고 해서, 서버에서 달라지는 것은 아무것도 없다.

즉, Select-조회하여 뿌려주기만하고, 서버 자체의 변화는 아무것도 없다는 것이다. 이를 우리는 안전한 메서드라고 말한다.


이번에는 POST 요청을 했다고 해보자. 클라이언트는 서버로 일련의 데이타들을 보낼 것이고, 그 데이타들은 서버 내에서 어떠한 작용을 한다 ( POST의 목적이므로 )

즉 서버 자체에 변화가 일어난 것이다. (결제가 일어난다거나,, 그룹이 생성된다거나 .. )


안전한 메서드의 목적은, 서버에 영향을 미치는 안전하지 않은 메서드가 사용될 때 사용자들에게 그 사실을 알려주는  HTTP 애플리케이션을 만들 수 있도록 하는 것임.


GET ?

가장 흔히 사용하게 될 메서드임. 서버에게 리소스를 요청


HEAD ?

동작 방식은 GET과 완전히 동일하지만, 서버는 응답으로 header만 리턴해주고 body는 돌려주지 않음.

- 리소스를 가져오기전에 리소스의 정보에 대해 알 수 있음.

- 응답의 상태코드를 통해, 개체가 존재하는지 확인

- 헤더를 확인해 리소스가 변경되었는지 체크 가능


PUT ?

서버에 문서를 씀. Request의 본문을 가지고 요청 URL의 이름대로 새 문서를 만들거나, 기존 문서에 덮어씀


1.요청 

PUT /test.txt HTTP/1.1

Host : www.asdf.com

Content-type : text/plain

Content-length : 5


ABCDE



2.서버는 /test.txt  문서를 생성(갱신)


3.응답

 HTTP/1.1 201 Created

~~blabla



POST ?
서버에 입력(처리) 데이타를 전송하기 위해 사용되며, HTML의 폼을 지원하기 위해 자주 사용됨.


TRACE ?

클라이언트가 서버로 요청 시, 실제로 방화벽. 프락시, 게이트웨이 등 많은 중간 과정을 거친다. 요청에는 어떠한 바디도 포함되지 않는ㄷ.

- TRACE는 클라이언트에게 자신의 요청이 서버에 도착 했을 때, 어떻게 보이게 되는지 알려준다

- 서버는 자신이 받은 요청 메시지를 body로 넣고 응답을 한다.
- 진단용으로 주로 사용.
대신 중간 단계 애플리케이션이 모든 메서드를 일관되게 처리한다는 가정이 들어간다. 실제로 다른 경우가 많다. POST는 바로 통과 시키나, GET은 웹 캐시등으로 전송하는 등의 프락시가 있다.

OPTIONS ?
웹 서버에게 여러가지 종류의 지원범위에 대해서 물어봄.


DELETE ?

말그대로, 리소스를 삭제 요청할때 사용한다. 하지만 삭제 요청만 하고, 삭제를 할지 무시할 지는 서버에서 정한다.



상태코드 ?

100-199 : 정보성 상태코드 

200-299 : 성공 상태 코드

300-399 : 리다이렉션 상태 코드

400-499 : 클라이언트 에러 상태 코드

500- 599 : 서버 에러 상태코드