일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 파이썬
- 코딩테스트
- javascript
- java
- HTTP상태
- 자바
- jsp
- 알고리즘
- Spring
- 탐욕알고리즘
- 서버
- 알고리즘코딩테스트
- 프로그래머스
- SQLD
- 개발
- 개발자
- 정렬알고리즘
- JQuery
- Python
- 챗지피티
- ChatGPT
- HTTP
- codingtest
- 그리디알고리즘
- SQL
- SQLP
- API
- 하루코딩
- 네트워크
- 백준
- Today
- Total
개발자's Life
[Network] HTTP API 설계 예시 by 김영한님 (Rowen Jobs) 본문
URI 설계 종류
HTTP API - 컬렉션
-> POST 기반 등록 : 회원관리 API 제공
HTTP API - 스토어
-> PUT 기반 등록 : 정적 컨텐츠 관리, 원격 파일 관리
HTTP API - FORM 사용 (GET, POST 만 지원)
-> 웹 페이지 회원 관리
예제
회원관리시스템 - 컬렉션
API 설계 - POST 기반 등록
리소스는 왠만해서는 변경하지 않고 HTTP 메서드 속성 값으로 진행.
GET : 회원목록 /members
POST : 회원등록 /members
GET : 회원조회 /members/{id}
PATCH, PUT, POST : 회원수정 /members/{id} : 기존 데이터를 없애고 완전히 덮어버릴 경우에는 PUT 을 사용함.
DELETE : 회원삭제 /members/{id}
클라이언트는 등록될 리소스의 URI 를 모른다.
서버가 새로 등록된 리소스 URI 를 생성해준다.
파일 관리 시스템 - 스토어
API 설계 - PUT 기반 등록
GET : 파일 목록 .files
GET : 파일 조회 /files/{filename}
PUT : 파일 등록 /files/{filename}
DELETE : 파일 삭제 /files/{filename}
POST : 파일 대량 등록 /files
클라이언트가 리소스 URI 를 알고 있어야 한다.
클라이언트가 직접 리소스의 URI 를 지정한다.
POST , PUT 의 차이
POST 는 클라이언트가 리소스의 URI 를 보내지 않아도 서버가 알아서 등록한다.
PUT 은 클라이언타가 리소스의 URI 를 보내서 관리가 된다.
HTML FORM 사용
-> GET, POST 만 지원
GET : 회원 목록 /members
GET : 회원 등록 폼 /members/new
POST : 회원 등록 /members/new or /members
GET : 회원 조회 /members/{id}
GET : 회원 수정 폼 /members/{id}/edit
POST : 회원 수정 /members/{id}/edit, /members/{id}
POST : 회원 삭제 /members{id}/delete
컨트롤 URI : /new, /edit, /delete .. 과 같이 HTTP 메서드로 해결하기 해매한 경우 컨트롤 URI 사용.
-> 최대한 URI 로 설계를 하고 정말 안될때 컨트롤 URI 를 사용.
정리
HTTP API 컬렉션 : 서버가 리소스 URI 결정
HTTP API 스토어 : 클라이언트가 리소스 URI 결정
HTTP FORM 사용 : 순수 HTML + HTML form 사용
URI 설계 개념 ( https://restfulapi.net/resource-naming/ )
- 문서
- 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
- ex) /members/100, /files/space.jpg
- 컬렉션
- 서버과 관리하는 리소스 디렉터리
- 서버가 리소르 URI 를 생성하고 관리
- ex) /members
- 스토어
- 클라이언트가 관리하는 자원 저장소
- 클라이언트가 리소스의 URI 를 알고 관리
- ex) files
- 컨트롤러,컨트롤URI
- 문서, 컬렉션, 스토어
- /members/{id}/delete
URI 는 리소스만 하고 액션은 GET, POST, PATCH, PUT, DELETE 만 설계가 되면 제일 최상이지만 실제로 거의 불가능.
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술
www.inflearn.com
'Back-end > Network' 카테고리의 다른 글
[Network] HTTP 상태 300 응답값 정리 by 김영한님 (Rowen Jobs) (0) | 2023.08.13 |
---|---|
[Network] HTTP 상태 200 응답값 정리 by 김영한님 (Rowen Jobs) (0) | 2023.08.12 |
[Network] HTTP 클라이언트 서버 전송 by 김영한님 (Rowen Jobs) (0) | 2023.08.08 |
[Network] HTTP 상태코드 간단 요약 by 김영한님 (Rowen Jobs) (0) | 2023.08.07 |
[Network] HTTP 메소드의 속성 정리 by 김영한님 (Rowen Jobs) (0) | 2023.08.05 |