들어가며
웹 애플리케이션을 개발하거나 RESTful API를 설계할 때, HTTP Method는 매우 중요한 역할을 합니다. HTTP Method는 클라이언트가 서버에 요청하는 리소스에 대한 행동을 정의하는 방법으로, 애플리케이션과 API의 기능과 동작 방식을 결정합니다. 이번 글에서는 Method의 종류들과 어떤 경우에 사용해야 하는지를 자세히 알아보겠습니다.
주요 Method
Method | CRUD |
POST | Create |
GET | Read |
PUT / PATCH | Update |
DELETE | Delete |
1. GET
서버로부터 리소스를 가져옵니다. 예를 들어, 웹 페이지를 로드하거나 이미지를 가져오는 데 사용됩니다.
2. POST
서버로 데이터를 제출합니다. 예를 들어, 사용자가 웹 양식을 제출하거나 데이터베이스에 새로운 항목을 추가하는 데 사용됩니다.
3. PUT
서버에 데이터를 업데이트합니다. 예를 들어, 파일을 업로드하거나 데이터베이스의 기존 항목을 업데이트하는 데 사용됩니다.
4. PATCH
리소스의 일부분만 업데이트합니다. PUT Method와 유사하지만, 리소스 전체를 대체하는 대신 리소스 일부를 업데이트합니다.
5. DELETE
서버에서 리소스를 삭제합니다. 예를 들어, 데이터베이스의 특정 항목을 삭제하거나 파일을 삭제하는 데 사용됩니다.
기타 Method
1. HEAD
GET Method와 유사하지만, 서버에서 리소스에 대한 메타데이터(헤더 정보)만을 가져옵니다. 예를 들어, 파일의 크기나 수정 날짜를 가져오는 데 사용됩니다.
2. OPTIONS
서버에서 지원하는 HTTP Method 및 지원되는 요청 헤더를 가져옵니다.
3. CONNECT
클라이언트와 서버 간의 터널을 만듭니다. 보안 연결(SSL 등)을 사용하여 두 컴퓨터 간의 안전한 통신을 가능하게 합니다.
4. TRACE
클라이언트에서 서버로 전송한 요청 메시지를 되돌려줍니다. 디버깅 및 진단 목적으로 사용됩니다.
정리
- GET - 서버로부터 정보를 요청, 데이터 조회
- POST - 서버로 데이터를 전송, 데이터 생성
- PUT - 서버에 데이터를 저장, 데이터 업데이트
- PATCH - 데이터 부분 업데이트 ( PUT은 전체 업데이트 )
- DELETE - 서버로부터 데이터 삭제
- HEAD - GET과 동일하지만 Body를 제외하고, Header와 상태 줄 반환
- OPTIONS: 서버에서 지원되는 Method들을 요청, CORS(Cross-Origin Resource Sharing)와 같은 보안 관련 기능에서 사용
- CONNECT: 서버와의 연결을 맺음, SSL/TLS(HTTPS)와 같은 보안 프로토콜에서 사용
- TRACE: 서버로부터 전송된 요청 메시지를 다시 되돌려 받음, 디버깅 목적으로 사용
마치며
HTTP Method는 웹 애플리케이션 및 RESTful API에서 중요한 역할을 합니다. 애플리케이션 또는 API를 설계할 때 적절한 Method를 선택하고 이를 올바르게 사용하는 것이 중요합니다. 이외에도 요청 및 응답 헤더, 쿠키, 세션 등과 같은 다른 요소들도 애플리케이션 또는 API의 동작 방식에 영향을 미치기 때문에 이러한 요소들도 함께 고려해야 합니다.
또한, 보안 측면에서도 중요합니다. 예를 들어, GET Method로 로그인 정보를 전송하는 것은 보안에 매우 취약합니다. 이와 같은 보안 문제를 해결하기 위해 POST Method를 사용하는 것이 좋습니다. 이렇게 HTTP Method의 종류와 기능을 이해하여 올바르게 사용함으로써 웹 애플리케이션 및 API의 성능과 보안을 향상시킬 수 있습니다.
'PROGRAMMING > CS' 카테고리의 다른 글
[CS] HTTP Status / Response Code ( Http 상태 / 응답 코드 정리 ) (45) | 2023.04.07 |
---|---|
[CS] 함수(Function)와 메서드(Method) 간단하고 정확하게 알아가기 (feat. Javascript) (26) | 2023.03.25 |
[CS] 블로킹과 논블로킹 그리고 동기와 비동기 (feat.Javascript) (36) | 2023.03.21 |
[CS] 함수형 프로그래밍의 특징(feat.Javascript) (36) | 2023.03.13 |
[CS] Argument와 Parameter의 차이 쉽게 이해하기 (feat. 인수 / 인자 / 매개변수 용어 정리) (36) | 2023.03.09 |