NetWork[HTTP-Method]
HTTP Method
웹상에서 활동할 때, 게시글 확인, 회원가입, 검색 등 여러 동작을 수행하는데, 이때 HTTP Method를 사용합니다. HTTP Method는 클라이언트가 서버에게 어떤 동작을 수행할지를 표준화된 방법으로 나타냅니다.
다양한 HTTP Method가 있으며, 각각의 메서드는 특정 목적을 수행합니다.
GET
요청 메세지
1
2
GET /members/100 HTTP/1.1
Host: localhost:8080
- 클라이언트가 서버로 요청 메세지를 전송합니다.
만들어진 데이터
1
2
3
4
{
"username": "young",
"age": 20
}
- 서버에서는 GET의 요청 경로를 기반으로 데이터를 만들어줍니다.
응답 데이터
1
2
3
4
5
6
7
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 34
{
"username": "young",
"age": 20
}
- 서버에서는 응답 데이터를 응답 메세지에 담아 클라이언트에게 다시 전송합니다.
- 이때 전달하고 싶은 데이터는 query를 통해서 전달합니다.
- GET 방식은 주로 리소스(데이터)를 조회할 때 사용되며, 요청한 데이터는 URL에 포함됩니다.
POST
요청 메세지
1
2
3
4
5
6
POST /members HTTP/1.1
Content-Type: application/json
{
"username": "young",
"age": 20
}
- POST방식은 먼저 클라이언트가 요청 메세지를 서버에게 전달합니다.
만들어진 데이터
1
2
3
4
{
"username": "young",
"age": 20
}
- 클라이언트에서 요청한 데이터를 처리합니다.
- 메세지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행합니다.
응답 메세지
1
2
3
4
5
6
7
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 34
{
"username": "young",
"age": 20
}
- 요청한 데이터를 처리하면, 응답데이터를 응답 메세지에 담아 클라이언트에게 다시 전송합니다.
- POST방식은 주로 신규 리소스를 등록하거나 프로세스 처리에 사용합니다.
PUT
- 리소스를 대체하는 메소드입니다.
- 리소스가 있으면 대체합니다.
- 리소스가 없으면 생성합니다.
요청 메세지
1
2
3
4
5
6
PUT /members/100 HTTP/1.1
Content-Type: application/json
{
"username": "old",
"age": 50
}
- 클라이언트가 서버에게 요청 메세지를 전송합니다.
기존 데이터
1
2
3
4
{
"username": "young",
"age": 20
}
- 리소스가 있는데 위의 요청이 들어오면 기존에 있던 리소스를 대체합니다.
- username : “young” -> “old”로 대체
- age : “20” -> “50”로 대체
- 반대로 리소스가 없으면 새로 생성합니다.
- 기존의 리소스가 없기 때문에, 새로 생성
- username : “old” -> 새로 생성
- age : “20” -> 새로 생성
- 기존의 리소스가 없기 때문에, 새로 생성
- 주의할점!! ### 요청 메세지
1 2 3 4 5
PUT /members/100 HTTP/1.1 Content-Type: application/json { "age": 50 }
- 요청 메세지가 위처럼 들어오게 된다면, age필드는 있고, username 필드가 없는 상태로 들어왔기 때문에, username이라는 필드는 삭제되고 age만 대체하게 됩니다.
- username 필드 존재 X -> 필드 삭제
- age : “20” -> “50”
1 2 3
{ "age": 50 }
- 요청 메세지가 위처럼 들어오게 된다면, age필드는 있고, username 필드가 없는 상태로 들어왔기 때문에, username이라는 필드는 삭제되고 age만 대체하게 됩니다.
PATCH
- 리소스를 부분 변경할떄 사용합니다.
요청 메세지
1 2 3 4 5
PATCH /members/100 HTTP/1.1 Content-Type: application/json { "age": 50 }
리소스 변경
1 2 3 4 5
변경 전 { "username": "young", "age": 20 }
1 2 3 4 5
변경 후 { "username": "young", "age": 50 }
DELETE
- 리소스 제거시에 사용됩니다.
요청 메세지
1 2
DELETE /members/100 HTTP/1.1 Host: localhost:8080
리소스 삭제
1 2 3 4 5
아래의 리소스를 삭제 { "username": "young", "age": 20 }
결론
- GET: 리소스 조회를 위한 메서드입니다.
- POST: 신규 리소스 생성 또는 프로세스 처리를 위한 메서드입니다.
- PUT: 리소스를 대체하는 메서드로, 클라이언트가 서버에게 요청 메시지를 전송하여 해당 리소스를 대체하거나 새로 생성합니다. 요청 메시지에 포함된 데이터로 리소스를 대체하며, 부분적인 변경은 불가능합니다.
- PATCH: 리소스를 부분적으로 변경하기 위한 메서드입니다.
- DELETE: 리소스를 제거하는 메서드입니다.
This post is licensed under CC BY 4.0 by the author.