[TIL] RESTful API
RESTful API
REST(Representational State Transfer)
웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식. 즉, 리소스(HTTP URI로 정의된)를 어떻게 한다(HTTP Method + Payload)를 구조적으로 깔끔하게 표현
RESTful API란?
REST 특징을 지키면서 API를 제공한다는 의미
장점 : Self-descriptiveness - RESTful API는 그 자체만으로 API의 목적이 쉽게 이해된다.
단점 : 표준 규약이 없어, 안티패턴으로 작성되는 경우가 흔하다
안티패턴 : 실제 많이 사용되는 패턴이지만 비효율적이거나 비생산적인 패턴
URI / HTTP Method / Payload
URI(Uniform Resource Identifier)
- 해당 사이트의 특정 자원의 위치를 나타내는 유일한 주소
HTTP Method
HTTP request가 의도하는 action을 정의한 것
Payload
HTTP request에서 server로 보내는 데이터(body)
Request
GET https://10.58.4.1/products
method protocol Host Resource
Response
200 ok
{
name : 'gildong'
nation : 'korea'
}
RESTful API 설계 규칙
1. URI 정보는 명확하게 표현해야 한다.
2. resource는 명사는 사용한다.
ex) GET /user/1 -> GET /users/1 (단수보다는 복수)
3. Resource에 대한 행위를 HTTP Method(GET, POST, DELETE, PUT)로 표현한다.
4. URI에 HTTP Method가 포함되서는 안된다.
ex) GET delete/user/1 -> DELETE /users/1
5. URI에 동사가 포함되서는 안된다.
ex) GET /user/show/1 GET /users/1
ex) POST inser/user/2 -> POST /users/2
6. resource 사이에 연관 관계가 있는 경우
/리소스/고유ID/관계 있는 리소스
ex) GET /users/{user_id}/profile
7. 파일의 경우 Payload의 포맷을 나타내기 위한 파일 확장자를 URI에 포함시키지 않는다
ex) GET user/1/profile-photo.jpg(x)
ex) GET user/1/profile-photo(이때, payload의 포맷은 headers에 accept를 사용한다)