HTTP Method (GET, POST, PUT, DELETE) 에 대한 정리
Wiki에 HTTP 를 검색하고 아래 표를 얻을 수 있었다.
요청에 Body가 있음, 응답에 Body가 있음
요청과 응답에 Body 가 있는지 없는 여부
멱등
사전 정의:
수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
POST: "파일을 생성해주세요." x10 번을 요청하면 처음을 성공하겠으나 두번째는 "이미 생성되어 있다" 라는 응답을 받는다.
PUT: "파일을 생성해주세요." x10 번을 요청하면 10번 다 성공으로 응답이 온다.
즉 여러번 연산을 수행하여도 항상 값이 일정한 것을 의미한다.
안전
이 것은 어떤걸 의미하는지 잘 모르겠다.
Post에 비해 PUT, DELETE 는 보안상의 이유로 사용하지 않는다고 한다.
특정 업데이트 대상 리소스알면 PUT, DELETE로 조작할 수 있기 때문이다.
캐시가능
JS, HTML, Resource 등 캐시가 가능하다.
웹 서버의 내용을 수정해서 배포하면 테스트하시는 분에게 "Browser" 캐시를 지워주세요. 라고 말하는 경우를 경험해 봤다면 알 것이다.
HTTP Response 에서는 캐시가 동작하게 되면 상태에 대한 변화를 정확히 알 수 없다.
그래서 Cache를 사용하지 않는다고 한다.
Cache-Control: no-cache
자세히 알고 싶으신 분들을 여기를 확인해 주세요!
GET VS POST 차이
Get: 길이 제한이 있는 URL Paramter로 웹 서버에 요청을 할 수 있다.
Post: body를 포함하여 웹 서버에 요청을 할 수 있다.
POST 는 응답 헤더에 content-type 가 있다.
content-type:application/json
POST VS PUT
사용법
POST /articles HTTP/1.1
PUT /article/1234 HTTP/1.1
PUT은 이미 변경 대상 리소스의 위치를 알고 있어서, 특정 업데이트 대상 리소스를 갱신할 수 있다.
HTTP Response Code
200 ~ 299: 성공
300 ~ 399: 리다이렉트
400 ~ 499: 클라이언트 오류 (요청 오류)
500~ 599: 서버 오류