모든 개발자를 위한 HTTP 웹 기본 지식 강의를 공부하고 정리한 글입니다.
/members
/members/{id}
/members/{id}
/members/{id}
/members/{id}
💡 참고: 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용 권장(member -> members)
회원
조회
, 등록
, 삭제
, 변경
GET
: 리소스 조회POST
: 요청 데이터 처리, 주로 등록에 사용한다.PUT
: 리소스를 대체하며 해당 리소스가 없으면 생성한다.PATCH
: 리소스 부분 변경DELETE
: 리소스 삭제HEAD
: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환OPTIONS
: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)CONNECT
: 대상 자원으로 식별되는 서버에 대한 터널을 설정 (거의 사용 X)TRACE
: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 (거의 사용 X)GET /members/100 HTTP/1.1
Host: example.com
query
(쿼리 파라미터, 쿼리 스트링)를 통해서 전달한다.HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 34
{
"username": "young",
"age": 20
}
POST /members HTTP/1.1
Content-Type: application/json
{
"username": "young",
"age": 20
}
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 34
Location: /members/100
{
"username": "young",
"age": 20
}
GET
은 주로 웹 브라우저가 웹 서버에 데이터를 요청
할 때 사용한다.POST
는 웹 브라우저가 웹 서버에 데이터를 전달
하기 위해 사용한다.GET
방식은 URL 뒤에 “?” 마크를 통해 데이터를 key-value 쌍으로 구분하여 스트링 형태로 전달한다.POST
방식은 GET 방식과 달리 데이터를 URL 뒤에 붙여서 보내지 않고 바디에 넣어서 보낸다.Content-Type
가 포함되고 이는 어떤 데이터 타입인지 명시한다.store
라고 한다. PUT /members/100 HTTP/1.1
Host: example.com
Content-type: application/json
{
"name": "minsu",
"age": 20
}
age
만 30
으로 변경된다.PATCH /members/100 HTTP/1.1
Host: example.com
Content-type: application/json
{
"age": 30
}
DELETE /members/100 HTTP/1.1
Host: example.com
GET
→ 조회이므로 안전함POST
, PUT
, DELETE
, PATCH
→ 리소스 변경하기에 안전하지 않음GET
: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.PUT
: 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.DELETE
: 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다.POST
: 멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.GET
, HEAD
캐시 가능POST
, PATCH
도 캐시 가능하나, 본문 내용까지 캐시 키로 고려하는 것이 어려우므로 구현이 쉽지 않음