요청할 때 사용하는 HTTP 메서드에는 GET과 POST 그리고 PUT, PATCH, DELETE가 있습니다. 각 종류별 기능과 쓰임에 대해서 알아봅니다.
[ Contents ]
1. HTTP 메서드 종류
GET: 리소스 조회
POST: 데이터 및 프로세스 처리 (주로 INSERT)
PUT: 리소스 대체 (없으면 생성)
PATCH: 리소스 부분 갱신
DELETE: 리소스 삭제
2. GET과 POST 메서드
1) GET 메서드
GET /search?q=jangThang HTTP/1.1
Host: star7sss.tistory.com
HTTP 메서드는 크게 Header와 Body로 이루어져 있습니다. GET메서드는 일반적으로 Header만 사용하며 Body는 사용하지 않습니다.
서버에 전달하고 싶은 데이터는 쿼리 파라미터, 스트링을 통해서 전달합니다. 따라서 전달하는 데이터가 적어야 하며, '검색 조건' 정도만 전달해도 되는 조회 용도로 많이 쓰입니다.
2) POST 메서드
POST /users HTTP/1.1
Content-Type: application/json
{
"id": "jangThang",
"name": "%EC%9E%A5%EB%95%A1"
}
// 한글은 URL 인코딩해서 전송됨
POST메서드는 GET메서드와 달리, Message Body가 있습니다. 다량의 데이터를 담기에 유리하며, 서버는 body의 데이터를 토대로 여러 데이터와 프로세스를 처리합니다.
GET메서드는 쿼리에 억지로 데이터를 담아야 하지만, POST는 바디 공간에 넉넉히 데이터를 넣을 수 있습니다. 보안적으로도 URL에 검색 인자가 노출되는 GET메서드보다는 POST메서드가 안전합니다.
실제로 구현해보면 GET메서드가 직관적이고 쉽긴 합니다. POST메서드는 Body에 담긴 데이터를 추출하고 해석하는 작업이 별도로 필요합니다. 반면 GET메서드는 쿼리 스트링을 통해 단순한 데이터만 전달되므로 해석하고 사용하긴 쉽습니다.
2022.03.24 - [Projects] - [Project] Patent Server: 특허 빅데이터 분석 플랫폼
3. 리소스 관련 메서드
리소스 관련해서도 POST메서드로 구현이 가능하나, 자주 쓰이는 기능은 따로 특화된 메서드가 있습니다.
리소스 생성, 수정, 삭제와 관련된 PUT, PATCH, DELETE 메서드입니다.
1) PUT
클라이언트가 변경 요청한 리소스가 있으면 대체, 없으면 생성
파일 이동할 때의 로직과 비슷합니다. 동일한 이름(URI)의 리소스가 없다면 등록하고, 있다면 덮어쓰기 합니다.
덮어쓰기이므로 일부만 대체되는 게 아니라 전부 대체됩니다.
2) PATCH
클라이언트가 변경 요청한 리소스의 일부 필드를 갱신
리소스의 일부만 갱신하고 싶다면 PATCH를 사용하면 됩니다. 게임 등의 업데이트에서도 '패치'라는 표현은 자주 사용하죠. 모든 파일을 새로 받는 게 아니라, 일부 업데이트 내용만 갱신하는 것을 뜻합니다.
3) DELETE
클라이언트가 삭제 요청한 리소스를 삭제
클라이언트가 전달한 URI의 리소스를 서버측에서 삭제합니다.
'CS > 데이터통신 & 네트워크' 카테고리의 다른 글
[네트워크] HTTP 상태코드: 200, 201, 204, 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 500, 503 (1) | 2023.07.10 |
---|---|
[네트워크] HTTP 메서드의 속성: 안전, 멱등, 캐시가능 (0) | 2023.07.10 |
[네트워크] HTTP 메시지 구조: 요청/응답 메시지 (시작라인, 헤더, 공백라인, 바디) (0) | 2023.07.07 |
[네트워크] HTTP의 특징: 무상태성(Stateless), 비연결성(Connectionless) (0) | 2023.07.06 |
[네트워크] URI, URL, 그리고 URN의 정의와 차이점 (0) | 2023.07.04 |
댓글