
모든 개발자를 위한 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 도 캐시 가능하나, 본문 내용까지 캐시 키로 고려하는 것이 어려우므로 구현이 쉽지 않음