HTTP 메소드란?
- 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식
- 서버가 주어진 리소스에 수행하길 원하는 행동, 클라이언트가 웹서버에게 어떤 종류의 동작을 원하는지 나타내는 방법
GET(★)
- 리소스(데이터)를 가져와서 조회하는 메서드
- 서버의 데이터 변경이나 생성하는데 사용되지 않고, 오직 데이터를 읽는 데만 사용
- 서버에 데이터 전달할 경우 쿼리스트링을 통해서 전달
(하지만, URL 맨마지막 query="개발~"이 그대로 노출되므로 유의)
POST(★)
- 새로운 리소스를 생성(create)하는데 사용
- 이미 리소스가 있는 상태에서 POST 할 경우 새로운 리소스를 생성
- GET 방식과 다르게 데이터가 외부로 노출되지 않아 보안상의 이점 존재
- 성공하면 201 HTTP 응답을 반환
PUT(★)
- 기존 리소스가 존재한다면 리소스를 완전히 대체해서 덮어씌우고 서버에 리소스가 없다면 생성함
- 부분 수정은 불가능
PATCH
- (PUT과 같이 리소스를 수정하는 역할을 수행하나) 리소스를 부분 변경
DELETE (★)
HEAD
- (GET과 동일한 역할을 수행하나) HEAD만 Return
- Body 부분을 넣지 않기에 실제 데이터가 아닌 데이터에 관한 정보만 얻으려고 할때 사용
멱동성은?
- 어떤 작업을 한 번 실행한 결과와 여러 번 실행한 결과가 똑같은 경우 멱동성이 있다고 한다.
- 같은 요청을 여러 번 보내도 서버의 상태가 변하지 않고 같은 응답이 돌아오면 그 요청은 멱동성을 가진다고 말함
GET, PUT, DELETE: 멱동성 O
(PUT으로 여러 번 리소스가 수정이 되더라도 요청한 값은 이미 수정된 상태이기 때문에 서버에 변화 없음)
POST, PATCH:멱동성 X
(리소스를 생성하거나 부분 수정하게 된다면 데이터들은 계속 변화할 것이고, 그 때마다 서버의 응답은 다른 응답을 나타내게 되고 결국 서버에 변화가 생김)
출처:
https://youwjune.tistory.com/42
https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-HTTP-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%A2%85%EB%A5%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC
https://infjin.tistory.com/165