HTTP 는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부 기능은 메서드 집합 간 서로 공유하기도 합니다. http 메서드에는 많은 종류가 있지만, CRUD에 관련된 주요 메서드만 알아보도록 하겠습니다.
HTTP method
http 주요 method는 다음과 같습니다.
GET
- GET method는 주로 데이터를 읽거나 검색할 때 사용하는 메소드입니다.
- 지정된 리소스를 요청하는 메소드이며 해당 리소스는 변경되지 않고 클라이언트로 전달만 됩니다.
POST
- POST method는 주로 새로운 리소스를 생성할 때 사용되는 메소드로, 구체적으로는 지정된 리소스의 하위 리소스를 생성하는데 사용됩니다.
- POST는 같은 요청을 여러개 보낼 시 같은 리소스가 수정되는 것이 아닌 여러개의 리소스가 생성됩니다. (덮어쓰는 개념 x, 계속 새롭게 생성)
- 그러므로 POST Request는 Idempotent(멱등) 하지 않다고 볼 수 있습니다.
PUT
- PUT method는 리소스를 업데이트하거나 생성할 때 사용되는 메소드입니다.
- 구체적으로 어떤 리소스를 수정해야하는지 식별자를 알고 URL을 통해 지정해주어야 하며, 리소스가 존재하지 않는 경우 새로운 리소스를 생성해줍니다.
- 같은 요청을 여러개 보내더라도 하나의 리소스만 생성되기 때문에 Idempotent 하다고 할 수 있음.
PATCH
- PATCH method는 리소스를 업데이트할 때 사용되는 메소드입니다.
- PATCH는 업데이트 진행 시 필요한 부분만 받아와서 업데이트를 진행하는데, PUT의 경우 요청을 보내면 전체를 업데이트 진행한다는 점에서 차이점을 보입니다.
DELETE
- DELETE method는 리소스를 삭제할 때 사용되는 메소드입니다.
- DELETE도 구체적으로 어떤 리소스를 수정해야하는지 식별자를 알고 URL로 지정해 주어야 합니다.
✅ Idempotent(멱등성)이란?
어떠한 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성이라고합니다. 즉 POST는 같은 요청을 여러번 보내면 결과가 달라지기 때문에 멱등하지 않다고 볼 수 있습니다.
CRUD 와 비교
CRUD | HTTP Method |
Read | GET |
Create | POST |
Update | PUT /PATCH |
Delete | DELETE |
POST vs PUT
일반적으로 POST는 생성 , PUT은 수정의 역할을 하는 메서드입니다. 하지만 위의 설명에서 PUT의 경우도 리소스가 존재하지 않을 경우 리소스를 생성해주는 역할을 합니다. 이 둘은 어떤 차이가 있을까요? 표를 통해 비교해보겠습니다.
조건 | POST | PUT |
요청시 리소스 식별자 | X | O |
Idempotent(멱등성) | X | O |
Response Caching | O (대신 status 300으로) | X |
각 Method별 예시
GET /example
→ 해당 엔드포인트에 있는 모든 데이터를 조회
GET /example/:id
→ 특정 id 값에 해당하는 데이터 하나만 조회
POST /example
→ 해당 리소스의 새로운 하위 리소스를 생성
POST /example/:id
→ 잘못된 요청, 위와 같이 특정 id 값 지정해줄수 없음
PUT /example/:id
→ 해당 id 값에 해당하는 데이터 전체 수정
PATCH /example/:id
→ 해당 id 값에 해당하는 일부 데이터만 수정
PUT /example
→ 잘못된 요청, 구체적인 식별자(id값)을 지정해야 함.
DELETE /example/:id
→ 특정 id 값에 해당하는 데이터 삭제
참고자료:
https://kingjakeu.github.io/study/2020/07/15/http-post-put/ https://m.blog.naver.com/azure0777/220824614635
'DevOps 부트캠프 > 네트워크' 카테고리의 다른 글
Nginx를 이용한 Reverse Proxy 및 캐시 설정 (0) | 2022.03.30 |
---|---|
프록시(proxy)란?_proxy, web cache (0) | 2022.03.14 |
TCP vs UDP (0) | 2022.03.14 |
RESTful API 란? (0) | 2021.12.10 |
댓글