[TIL 5] HTTP 메소드
회원 정보를 관리하는 API를 만들어야 한다고 가정해 보자.
그러면 회원 등록 URI, 회원 조회 URI, 회원 삭제 URI 등을 맵핑해야 할 것이다.
URI는 '리소스'를 식별하는 것이고 이 리소스에는 '회원'만 포함된다.
조회/등록/삭제/변경 등의 행위는 http 메소드를 통해 구현한다.
(리소스만 URI 맵핑한다고 모든 게 작동되는 것은 아니고, 간혹 컨트롤 URI도 별도로 맵핑해야 할 때가 있다)
*컨트롤 URI
: get, post 등 만으로는 부족한 추가 프로세스를 처리해야 할 경우, 추가적으로 사용되는 URI
http 메소드는 대표적으로 get, post, put, patch, delete, head 등이 있다.
- get, 리소스 조회
: message body는 일반적으로 넣지 않음 (이를 지원하는 서버가 많지 않음)
: 전달하고 싶은 데이터는 query를 통해 전달
- head, 리소스 조회 (메세지 body는 제외하고 status line, header만 조회)
- post, 리소스 처리
: 신규 리소스 등록 혹은 프로세스 처리에도 사용 가능
(회원가입/주문, 게시판 글쓰기/댓글 달기, 신규 주문 생성, 결제-배달-배달 완료 등 상태 변경 프로세스 등)
: 다른 메서드로 처리하기 어려우면 post를 사용하기도 함
- put, 리소스 대체
: 핵심은 "완전한" 대체 (기존 리소스가 있으면 100% 대체, 없으면 신규 생성)
: 클라이언트는 처음부터 리소스 위치를 알고 URI를 지정함
- patch, 리소스 부분 변경
: 위에서 언급했듯 put은 리소스를 완전히 대체하기에, 부분적으로 변경하려면 patch를 사용해야 함
: 만약에 서버가 put을 지원하지 않는다? post 를 사용하면 됨
- delete, 리소스 삭제
http 메소드는 몇 가지 특징이 있다.
1) 안전: 호출해도 리소스는 변하지 않는다(get, head와 같은 메소드)
2) 멱등: 1번 호출해도, 100번 호출해도 결과는 똑같다 (put 과 같은 메소드가 대표적으로, 자동복구시스템에 이 '멱등'이란 개념이 활용된다. 하지만 post는 아님. 만약 신규 주문 생성을 2번 한다면?)
3) 캐시가능: cacheable, get/head 정도만 해당
*API란?
: application programming interface, 프로그래밍 언어가 제공하는 기능을 새로운 응용 프로그램에서 사용 및 제어할 수 있도록 해주는 장치(interface)
: 버튼을 클릭했을 때 경고창이 뜨게 하려면?
: 지도를 이용해 일기예보 정보를 보여주는 서비스를 만드려면?
: 내 웹 서비스 페이지에서 결제하기를 추가하려면?
-> 경고창, 구글맵, 결제 등이 API에 해당한다고 볼 수 있다.
-> 카카오 developer 사이트 등을 방문하면, 다양한 API 를 제공하는 것을 알 수 있다.
내용 출처: 모든 개발자를 위한 HTTP웹 기본 지식, 김영한