[Network] HTTP 메서드의 종류
1. HTTP 메서드의 종류
HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.
HTTP 메서드는 총 9가지가 있으며 주로 GET, POST, PUT, PATCH, DELETE를 사용합니다.
메서드 | 설명 |
POST | 요청 데이터 처리, 주로 등록에 사용 |
GET | 리소스 조회 |
PUT(전체) | 리소스 전체 변경(덮어쓰기), 해당 리소스가 없으면 생성 |
PATCH(일부) | 리소스 부분 변경 (일부 변경) |
DELETE | 리소스 삭제 |
OPTIONS | 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용) |
HEAD | GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환 |
TRACE | 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 |
CONNECT | 대상 자원으로 식별되는 서버에 대한 터널을 설정 |
메서드 | 의미 | CRUD | 멱등성 | 안전성 | Path Variable | Query Parameter | Data Body |
GET | 리소스 취득 | R | O | O | O | O | X |
POST | 리소스 생성, 추가 | C | X | X | O | △ | O |
PUT | 리소스 갱신, 생성 | C/U | O | X | O | △ | O |
DELETE | 리소스 삭제 | D | O | X | O | O | X |
HEAD | 헤더 데이터 취득 | - | O | O | - | - | - |
OPTIONS | 지원하는 메서드 취득 | - | O | O | - | - | - |
TRACE | 요청메시지 반환 | - | O | O | - | - | - |
CONNECT | 프록시 동작의 터널 접속으로 변경 | - | X | - | - | - | - |
설명
- CRUD: 각 메서드가 수행하는 CRUD(Operation) 작업
- C: Create(생성)
- R: Read(읽기)
- U: Update(갱신)
- D: Delete(삭제)
- 멱등성: 여러 번 수행해도 결과가 동일한지 여부
- O: 멱등성을 가짐
- X: 멱등성을 가지지 않음
- 안정성: 서버의 상태를 변경하지 않는지 여부
- O: 안전한 메서드
- X: 안전하지 않은 메서드
- Path Variable: URL 경로의 일부로 변수를 사용할 수 있는지 여부
- O: 사용 가능
- X: 사용 불가능
- △: 경우에 따라 사용 가능
- Query Parameter: URL의 쿼리 문자열로 데이터를 전송할 수 있는지 여부
- O: 사용 가능
- X: 사용 불가능
- △: 경우에 따라 사용 가능
- Data Body: 요청 본문에 데이터를 포함할 수 있는지 여부
- O: 사용 가능
- X: 사용 불가능
2. 엔드포인트란?
엔드포인트는 웹 서비스에서 특정 서비스를 사용하기 위한 '접점' 혹은 '주소'입니다. 웹 서비스에 접속하는 사용자가 원하는 기능을 이용할 수 있도록 그에 해당하는 위치를 가리키는 역할을 합니다. 이 위치는 URL 형태로 표현되며, 특정 서비스와 연결되어 있습니다.
엔드포인트는 일반적으로 다음과 같은 구조를 가집니다.
https://api.example.com/users
여기서 https://api.example.com/은 기본 URL이며, /users는 엔드포인트입니다. /users 엔드포인트는 사용자 정보에 접근하는 역할을 합니다.
3. RESTful 엔드포인트
RESTful 웹 서비스에서는 엔드포인트를 설계할 때 특별한 규칙을 따르곤 합니다. 리소스를 중심으로 엔드포인트를 설계하며, 특정 리소스에 접근하거나, 리소스를 생성, 수정, 삭제하는 등의 동작이 URL을 통해 명시적으로 드러나도록 합니다.
예를 들어, /users 엔드포인트에서 GET 메서드를 사용하면 모든 사용자 정보를 조회하고, POST 메서드를 사용하면 새로운 사용자를 생성하는 동작을 수행합니다. 또한, /users/{user_id}와 같은 엔드포인트에서는 특정 사용자의 정보를 조회, 수정, 삭제하는 동작을 수행합니다.
엔드포인트는 웹 서비스에서 중요한 역할을 하는 만큼, 깔끔하고 일관성 있는 엔드포인트 설계는 사용자에게 직관적인 서비스 이용을 제공하고, 개발자에게는 효율적인 개발 환경을 제공합니다.
https://dev.to/anwar_nairi/design-an-easy-to-use-and-flexible-rest-endpoints-3fia
[Reference]
https://www.freecodecamp.org/korean/news/rest-api-mobeom-sarye-rest-endeupointeu-seolgye-yesi/
https://dev.to/anwar_nairi/design-an-easy-to-use-and-flexible-rest-endpoints-3fia