Spring REST API 정의와 설계 규칙
REST API에 대해 설명하기 전, 기본적으로 API는 무엇인지에 대해 알아야 한다.
API란?
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
REST API란?
REST API에 REST는 Representational State Transfer의 약자로 소프트웨어 프로그램 아키텍처의 한 형식이다.
REST api의 등장은 2000년도에 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표 하였다.
Resource에 대한 행위는 HTTP Method로 표현한다
아래가 대표적으로 사용하는 4가지 HTTP Mehtod이다.
GET | GET을 동해 해당 리소스를 조회합니다. |
POST | POST를 통해 해당 URL를 요청하면 리소스를 생성합니다. |
PUT | PUT을 통해 해당 리소스를 수정합니다. |
DELETE | DELETE를 통해 해당 리소스를 삭제합니다. |
1. REST API 기본규칙
- URI는 정보의 자원을 표현해야 한다.
- resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
- resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
- 확장자를 사용하지 않는다. (.do)
- 밑줄( _ ) 을 사용하지 않고 하이픈을( - ) 사용한다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현한다.
- HTTP Method나 동사표현이 URI에 들어가면 안됩니다.
- :id와 같이 변하는 값은 하나의 특정 resource를 나타내는 고유값이어야 한다.
흔히 하는 실수는 URI에 자원에 대한 행위를 넣는 것이다.
//잘못된 설계
전체조회 @GetMapping(/member/get)
특정조회 @GetMapping(/member/get/{id})
등록 @PostMapping(/member/create)
삭제 @GetMappiong(/member/delete/{id})
수정 @PostMapping(/member/update/{id})
//올바른 설계
전체조회 @GetMapping(/member)
특정조회 @GetMapping(/member/{id})
등록 @PostMapping(/member)
삭제 @DeleteMappiong(/member/{id})
수정 @PutMapping(/member/{id})
2. Rest API 세부규칙
슬래시(/)는 계층 관계를 나타낸다.
http://www.example.com/fruits/banana
URI의 마지막엔 슬래시(/)를 포함하지 않는다.
http://www.example.com/fruits/banana/ (X)
가독성을 높이기 위해 하이픈(-)을 사용할 수 있으나 언더바(_)를 사용하진 않는다.
http://www.example.com/tropical_fruits/banana/ (X) http://www.example.com/tropical-fruits/banana/ (O)
URI 경로에는 소문자를 쓴다.
http://api.example.restapi.org/my-folder/my-doc
리소스간 연관관계가 있는 경우
/리소스명/리소스ID/관계있는 다른 리소스명(일반적으로 소유has의 관계)
@GetMapping(/member/{id}/spec)
<본문의 출처>
https://one-it.tistory.com/entry/RESTful-API-%EC%84%A4%EA%B3%84-%EA%B7%9C%EC%B9%99
https://velog.io/@wlsdud2194/HTTP-REST-API-%EB%9E%80