REST API (Representational State Transfer)
쉽게 말하면 자원(resource)의 표현(representation)을 상태(state)로 전달(transfer)한다 !
- 자원 : 해당 소프트웨어가 관리하는 모든 것 (문서, 그림, 데이터 등등)
- 표현 : 그 자원을 표현하기 위한 이름
- 상태(정보) 전달 : 데이터가 요청되어지는 시점에서 자원의 상태 전달. (JSON / XML 형태로 주고 받는 것이 일반적)
=> HTTP Method를 통해 CRUD 적용
CREATE | POST (생성) |
READ | GET (조회) |
UPDATE | PUT (수정) |
DELETE | DELETE (삭제) |
HEAD | HEAD (header 정보 조회) |
- 자원이 있는 쪽이 server / 자원을 요청하는 쪽이 client
- REST API (Application Programming Interface)
: REST 기반으로 서비스 API를 구현한 것.
URL 만으로도 이 요청이 무슨 요청인지 이해할 수 있도록 작성하는 것이 좋다.
1. URI는 정보 자원을 표현해야 한다.
- 동사보다는 명사를
- 대문자보다는 소문자를 사용
- 도큐먼트(객체 인스턴스나 데이터베이스 레코드와 유사한 개념) 이름 : 단수명사 사용
- 컬렉션(서버에서 관리하는 디렉터리라는 리소스) 이름 : 복수명사 사용
- 스토어(클라이언트에서 관리하는 리소스 저장소) 이름 : 복수명사 사용
ex. GET/Member/1 -> GET/members/1
2. 자원에 대한 행위는 HTTP method로 표현
- URI에 HTTP Method 사용 X
- 행위 동사 표현 X
- 경로 부분 중 변하는 부분은 유일한 값으로 대체
ex. GET/members/delete/1 -> DELETE/members/1
ex. GET/members/show/1 -> GET/members/1
3. 설계 규칙
- 밑줄 사용 X -> 하이픈 사용
- 파일확장자는 포함 X
- 슬래시 구분자는 계층 관계를 나타내는데 사용
** 사용 이유 **
- 다양한 클라이언트의 등장
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능.
- 이해하기 쉽고 사용하기 쉬움
'Programming > Spring, SpringBoot' 카테고리의 다른 글
[JPA] 지연로딩 Lazy, 즉시로딩 Eager (0) | 2023.11.06 |
---|---|
순환 참조 에러 (1) | 2023.10.31 |
[JPA] CRUD 간단한 쿼리 실습해보기 (0) | 2023.10.27 |
[JPA] 오라클의 경우 시퀀스 값이 공유되는 문제 (@GeneratedValue 설정시) (0) | 2023.10.27 |
[JPA] 영속성 컨텍스트 라이프사이클 (1) | 2023.10.26 |