웹 공부하기/HTTP

[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드)

HTTP API를 설계할 때 사용되는 HTTP 메서드에 대해 알아보자!

 

HTTP API 를 만들어보자

회원 정보 관리 API를 만든다고 가정해보자. 회원 목록 조회, 회원 조회, 회원 등록, 회원 수정, 회원 삭제에 대한 API를 만들어야 한다.

그에 맞는 URI를 설계해야 하는데, 이 때 /create-member 이런 식으로 설계하면 좋은 설계는 아니다..!

왜?

리소스를 식별할 수 있도록 설계하는 것이 가장 좋은 방법!

리소스란?

회원을 등록하고 수정, 조회하는 행동이 리소스가 아니라 여기서는 회원 자체가 리소스인 것이다.

리소스를 어떻게 식별하는 게 좋을까?

회원이라는 리소스만 식별하면 되고, 회원 리소스를 URI에 매핑한다. 회원 조회를 /members/{id}로 했을 때, 회원 등록도 /members/{id} 이렇게 설정할 것이다. 그럼 이걸 어떻게 구분하는가..? → HTTP 메서드!!!

리소스와 행위를 분리하는 것이 중요

URI는 리소스(보통 명사)만 식별하고, HTTP 메서드는 행위(보통 동사)를 구분하게 한다.

ex) 리소스: 회원, 행위: 조회, 등록, 삭제, 변경

 

HTTP 메서드 - GET, POST

  • GET: 리소스 조회
    서버에 전달하고 싶은 데이터를 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달한다. 메세지 바디를 사용해서 데이터를 전달해도 되지만, 지원하지 않는 곳이 많아서 권장하진 않는다.
  • POST: 요청 데이터 처리
    메세지 바디를 통해 서버로 요청 데이터를 전달하면, 서버는 요청 데이터를 처리해서 응답 메세지를 보내준다. 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행한다. ex) 게시판 글쓰기, 댓글 달기, 신규 주문 생성, HTML form에 입력한 정보로 회원 가입 시 ...

 

POST의 역할

  1. 새 리소스 생성(등록)
  2. 요청 데이터 처리
    • 단순히 데이터를 생성하거나 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
    • POST의 결과로 새로운 리소스가 생성되지 않을 수도 있음
  3. 다른 메서드로 처리하기 어려운 경우

 

HTTP 메서드 - PUT, PATCH, DELETE

  • PUT: 리소스 대체
    리소스가 있으면 기존 리소스를 대체하고, 리소스가 없으면 새로 생성한다. POST와 차이점은 클라이언트가 리소스 위치를 정확하게 알고 URI를 지정한다는 점이다. 만약 "age": 50을 보내면 기존 username 필드는 삭제되고, "age": 50로 대체된다.
  • PATCH: 리소스 부분 변경
    PUT과 다르게 리소스의 일부분만 변경이 가능하다. 만약 "age": 50을 보내면 기존 username 필드는 유지되고, "username": "hello" , "age": 50로 변경된다.
  • DELETE: 리소스 제거
    원하는 리소스의 위치를 지정하여 리소스를 제거할 수 있다.

출처: [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식