TIL

[TIL] RESTful API

세모이 2022. 1. 26. 20:06
반응형

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를 사용한다)

8. URI는 / 구분자를 사용하여 자원의 계층 관계를 나타내는데 사용한다

9. URI 마지막 문자로 /를 포함하지 않는다.

10. 불가피하게 URI가 길어지는 경우 -를 사용하여 가독성을 높인다

11. _는 사용하지 않는다.

12. URI 경로에는 대문자 사용을 피하도록 규정하고 있다.

반응형