모든 개발자를 위한 HTTP 웹 기본 지식 Chapter 5

이규훈·2024년 12월 31일

HTTP API

URI는 리소스만 식별
리소스와 해당 리소스를 대상하는 행위는 분리
행위는 어떻게 구분? -> HTTP 메서드를 사용

GET POST

GET -> 조회
POST -> 요청 데이터 처리, 주로 등록에 사용
PUT -> 리소스를 대체, 해당 리소스가 없으면 생성
PATCH -> 리소스 부분 변경
DELETE -> 리소스 삭제

GET

리소스 조회
서버에 전달하고 싶은 데이터는 query 파라미터로 전달
메세지 바디를 통해서 보낼 수는 있지만 권장 X

POST

메세지 바디를 통해 서버로 요청 데이터 전달
서버는 요청 데이터를 처리
메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다.

주로 전달된 데이터로 신규등록등에 사용

신규로 생성될 경우 201 리턴

POST의 결과로 새로운 리소스가 생성되지않더라도 요청 데이터를 처리하는 경우에는 POST 사용

PUT

리소스를 대체
-> 리소스가 있으면 대체 (완전히대체)
-> 없으면 생성
-> 쉽게 이야기해서 덮어버림

중요! 클라이언트가 리소스를 식별
-> 클라이언트가 리소스 위치를 알고 URI 지정
-> POST과의 차이점

POST에서는 /members로 위치는 모르고 요청을 보내지만 PUT은 /members/100처럼 리소스의 위치를 정확히 알고 URI을 지정한다.

주의점
리소스를 완전히 대체한다.

PATCH

리소스를 부분적으로만 변경할때는 PATCH 사용

DELETE

리소스 제거시

PATCH 못쓸경우 POST사용하면 된다.

HTTP 메서드의 속성

• 안전(Safe Methods)
• 멱등(Idempotent Methods)
• 캐시가능(Cacheable Methods)

안전

호출하여도 리소스가 변하지 않는다.
ex) GET
POST,DELETE, PUT 등등 리소스 변경되는 것들은 안전하지않음

멱등

한 번 호출하든 여러번 호출하든 결과가 똑같다.
ex) get, put, delete

멱등 활용

  • 자동 복구 메커니즘
    만약 DELETE을 호출하였는데 응답이 없을경우 클라이언트 입장에서는 DELETE는 멱등성을 가지고 있기때문에 서버의 응답이 없을 경우 다시 호출을 해도 된다.

캐시가능(Cacheable Methods)

응답 결과를 리소스를 캐시해서 사용해도 되는가?
GET, HEAD, POST,PATCH 캐시가능

실제로를 GET, HEAD정도만 캐시로 사용 가능

profile
개발취준생

0개의 댓글