ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (HTTP) 10 - HTTP 메서드 (GET, POST, PUT, PATCH, DELETE)
    개발/HTTP 2024. 10. 31. 10:56

    ■  API URI 고민 

     

    중요한 것은 리소스 식별이다. 

     

    * 리소스란?

    - 회원 등록, 수정, 조회가 리소스가 아님

    - 회원이라는 개념 자체가 리소스

    * 리소스 식별 방법

    - 회원 등록하고 수정 조회하는 것을 모두 배제

    - 회원이라는 리소스만 식별하면 된다 -> 회원 리소스를 URI 에 매핑

     

     

    리소스만 가지고 URI 를 만들면 모두 URI 가 동일하게 만들어진다. 

    구분 방법이 필요해진다.

     

     

    - 리소스와 행위를 분리해야 한다.

    - URI 는 리소스만 식별

    - 리소스와 해당 리소스를 대상으로 하는 행위를 분리한다.

    ex) 리소스 : 회원

    행위 : 조회, 등록, 삭제, 변경

    - 리소스는 명사, 행위는 동사

     

    ■ HTTP 메서드 종류

    * 주요 메서드

    - GET : 리소스 조회

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

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

    ex) 폴더에 파일 넣는 것과 비슷

    - PATCH : 리소스 부분 변경

    - DELETE : 리소스 삭제

     

    * 기타 메서드

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

    - OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명 (주로 CORS 에서 사용)

    - CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정 -> 거의 사용X

    - TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행 -> 거의 사용X

     

    ■ GET

     

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

    - 메시지 바디에 담을 수 있지만 권장하지 않음

     

     

    ■ POST

     

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

    - 등록에 주로 많이 사용

     

     

    201 Created : 신규 자원 생성 시 보통 사용

    Location : 자원이 생성된 URI 경로

     

     

    - HTML FORM 에 있는 데이터 처리 시 사용

    - 게시판 글쓰기

    - 서버가 아직 식별하지 않은 새 리소스 생성

    ex) 신규 주문 생성

    - 기존 자원에 데이터 추가

     

    - 리소스 URI 에 POST 요청이 오면 요청 데이터를 어떻게 처리할 지 리소스마다 따로 정해야 함

    -> 정해진 것이 없음.

     

    ■ POST 정리

     

    1. 새 리소스 생성(등록)

    2. 요청 데이터 처리

    - 단순 데이터 생성, 변경이 아니라 프로세스 처리해야 하는 경우

    - POST 결과 새로운 리소스 결과가 생성되지 않을 수도 있다.

    - 컨트롤 URI(동사 URI) 가 필요한 경우 -> 모든 것을 리소스만으로 URI 만드는 데 한계 있다.

    3. 다른 메서드로 처리하기 애매한 경우

    - JSON 조회 데이터 넘겨야 하는데 GET 메서드 사용하기 어려운 경우

    ※ GET 메서드는 메시지 바디 지원 안하는 곳 많기 때문에

     

    조회 데이터 최대 GET, 데이터 변경, 프로세스 처리 등 POST 사용 권장

     

    ■ PUT

     

    - 리소스 대체

    - 폴더 안에 파일 복사하는 것과 비슷

    - 리소스가 있으면 대체 없으면 생성 (덮어쓰기)

    - 클라이언트가 리소스를 식별 (전체 경로를 알고 있다.)

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

    - POST 차이

     

    리소스가 있다면 리소스를 대체하게 된다. 

     

     

    그러나 PUT 은 만약 변경하고 싶은 내용이 age 에 대한 내용이여서 그 내용만 보내면

    완전 대체를 하기 때문에 이전의 username 필드가 삭제가 돼 버린다. (덮어쓰기)

     

    ■ PATCH

     

    리소스 부분 변경을 원한다면 PATCH 를 사용하면 된다. 

     

     

    ■ DELETE

     

    만약 PATCH 를 지원하지 않는데 부분 변경이 필요하다면 POST 를 사용하면 된다. 

     

    https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

     

    모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런

    김영한 | 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연

    www.inflearn.com

     

Designed by Tistory.