HTTP 메서드

2025. 7. 2. 15:21HTTP 모든 지식

🧩 HTTP API를 만들어보자

요구 사항: 회원 정보 관리 API

✅ RESTful URI 설계 예시

기능URI 예시설명
회원 목록 조회 GET /members 전체 회원 리스트 조회
회원 조회 GET /members/{id} 특정 회원 조회
회원 등록 POST /members 회원 추가
회원 수정 PUT /members/{id} 회원 정보 수정
회원 삭제 DELETE /members/{id} 회원 삭제

참고: 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용 권장(member -> members)

 

HTTP 메서드 - GET. POST

주요 메서드

● GET: 리소스 조회

POST: 요청 데이터 처리, 주로 등록에 사용

PUT: 리소스를 대체, 해당 리소스가 없으면 생성

PATCH: 리소스 부분 변경

DELETE: 리소스 삭제

 

기타 메서드

● HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환

● OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명

● CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정

● TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

 

1.GET 

- 리소스 조회

- 서버에 전달고 싶은 데이터는 query를 통해서 전달

- 메시지 바디를 사용해서 데이터를 전다할 수 있지만, 지원하지 않는 곳이 많아서 권장하지 않음

 

2.POST

- 요청 데이터 처리

- 메시지 바디를 통해 서버로 요청 데이터 전달

-스펙: POST 메서드는 대상 리소스가 리소스의 고유 한 의미 체계에 따라 요청에 포함 된 표현을 처리하도록 요청합니다.(구글 번역)

-POST 사용 기능

  ● HTML 양식에 입력 된 필드와 같은 데이터 블록을 데이터 처리 프로세스에 제공

  ● 게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 유사한 기사 그룹에 메시지 게시

 

정리: 데이터를 조회할 떄는 GET 방식이 유리하지만, 추가 하거나 데이터 처리할 때는 POST 사용 권장.

 

3.PUT 

● 리소스를 대체

    - 리소스가 있으면 대체

    - 리소스가 없으면 생성

    - 쉽게 이야기해서 덮어버림

●중요! 클라이언트가 리소스를 식별

    - 클라이언트가 리소스 위치를 알고 URI 지정

    - POST와 차이점(중요)

POST vs PUT의 구체적 비교

  • 항목                                                POST                                                                           PUT
리소스 위치 서버가 결정 클라이언트가 지정
사용 목적 리소스 생성, 처리 리소스 생성 또는 전체 대체
멱등성 X (비멱등) O (멱등)

4.PATCH

● 부분 수정 -> 일부만 수정하기 위해서는 PATCH 사용

 

5.DELETE 

● 삭제 -> 리소스 제거

 

HTTP 메서드의 속성

● 안전(SAFE)

    - 호출해도 리소스를 변경하지 않는다.

    - (질문) -> 계속 호출해서, 로그 같은게 쌓여서 장애가 발생한다면?? -> 안전은 해당 리소스만 고려한다.

 

● 멱등(Idempotent)

    - 쉽게 이야기 하면 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.

    - GET : 한번 조회하든, 두번 조회하든 같은 결과가 조회한다.

    - PUT : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.

    - DELETE : 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 같다.

    - POST : 멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.

● 활용

    - 자동 복구 메커니즘

    - 서버가 TIMEOUT 등으로 정상 응답을 못주었을때, 클라이언트가 같은 요청을 다시 해도 되는가? 판단근거??

        - 쉽게 이야기하면 DELETE를 자동으로 호출해도 상관이 없다 -> 멱등하기 때문에 -> 결과가 바뀌지 않는다.

● 질문? -> 재요청 중간에 다른 곳에서 리소스를 변경해버리면??

   - 사용자1이 GET 요청을 통해 userName : A , age:20 이라는 조회를 했다고 가정해보자.

   - 사용자2가 PUT을 하면서 userName: A, age:30 이라고 바꿔버렸다.

   - 다시 사용자1이 GET 요청을 한다면 userName: A, age:30 이라는 결과가 나올것이다.

   - 분명 GET 요청만했는데 데이터가 바뀌어 버리는 상황이 나온것이다. 

   ★ 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다(핵심)

 

● 캐시가능(Cacheable)

- GET, HEAD, POST, PATCH 캐시가능 -> 하지만 실무에서는 GET정도로만 캐시 가능

- 실제로는 GET, HEAD 정도만 캐시로 사용

   - POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않음

 

'HTTP 모든 지식' 카테고리의 다른 글

HTTP 헤더 캐시와 조건부 요청  (0) 2025.07.06
HTTP 상태코드  (1) 2025.07.03
[URI와 웹 브라우저 요청 흐름]  (0) 2025.07.02
HTTP 지식 모든 것  (0) 2025.07.02