API(Application Programming Interface)
Client와 Server가 통신하기 위해 필요한 API.
URI를 통해 서로 요청을 식별하는데, 올바론 API URI 설계는 무엇일까?
리소스 식별에 집중하자
CRUD 기능을 구현하는
회원 가입, 회원 조회, 회원 정보 변경, 회원 탈퇴 기능들을 만든다고 생각해보자.
- 회원 가입 : /create-members/{id}
- 회원 조회 : /read-members/{id}
- 회원 변경 : /update-members/{id}
- 회원 탈퇴 : /delete-members/{id}
이때 집중해야 할 것은 CRUD가 아닌 '회원'이라는 리소스이다.
따라서 리소스만 URI에 매핑하는것이 제일 좋다
- 회원 가입 : /members/{id}
- 회원 조회 : /members/{id}
- 회원 변경 : /members/{id}
- 회원 탈퇴 : /members/{id}
이때 생기는 문제는 Server에서는 이 각기 다른 4가지 기능을 어떻게 구분할 것인가? 이다
다음과 같은 방법으로 구분하게 된다.
HTTP 메서드(GET, POST, PUT, ...)
- GET : 리소스 조회, Message Body를 통해서 데이터를 전송할 수 있지만 권장되지 않음
- POST : 요청 데이터 처리, 사실상 만능, 모든 일을 다 할 수 있음
- PUT : 리소스를 대체(아예 싹 밀어버림), 없으면 새로 생성
- PATCH : 리소스를 변경(싹 밀지 않고 변경사항만 저장) <-> PUT
- DELETE : 리소스 삭제
POST 메서드
- 새 리소스 생성 : 글쓰기
- 요청 데이터 처리 : 단순히 데이터를 생성하는거나 변경하는것을 넘어 프로세스를 처리해야 하는 경우
- /orders/{orderId}/start-delivery
HTTP 메서드의 속성
- 안전 : 호출해도 리소스를 변경하지 않는다
- 멱등 : 몇 번을 호출해도 결과가 똑같다 => 서버가 정상 응답을 못 주었을때, 클라이언트가 같은 요청을 다시 보내도 되는가? POST면은 고려해야 할 사항이 많다
- 캐시가능 : 응답 결과 리소스를 캐시해도 되는가?
Client -> Server로의 데이터 전송
- 쿼리 파라미터를 이용한 데이터 전송 : GET방식, 주로 정렬 필터에 사용
- Message Body를 이용한 데이터 전송 : POST, PUT 등등 => 회원 가입, 상품 주문, 리소스 등록, 리소스 변경
출처 : 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
'Back-End > HTTP 기본' 카테고리의 다른 글
[HTTP 기본] 4. HTTP 상태 코드와 HTTP 헤더 (0) | 2022.07.18 |
---|---|
[HTTP 기본] 2. HTTP 통신 흐름과 Stateless (0) | 2022.07.17 |
[HTTP 기본] 1. 네트워크 통신 기초 (0) | 2022.07.17 |