RESTful API

토닉·2021년 5월 16일
0

RESTful API란?

API 시스템을 구현하기 위한 아키텍처 중에 가장 널리 사용되는 형식

리소스(URI)어떻게 한다(HTTP Method)를 구조적으로 깔끔하게 표현
아키텍처: 설계도, 구조

구성

  1. HTTP method : 동사
  2. URI : 자원
  3. Resource : 실제 DB

URI(Uniform Resource Identifier)
해당 사이트의 특정 자원의 위치를 나타내는 유일한 주소

HTTP Method
HTTP request가 의도하는 action을 정의한 것

Payload
HTTP request에서 server로 보내는 데이터 (request.body)

URL과 URI의 차이점
URI가 더 큰 개념
URL은 특정 자원을 가지고 무엇을 할지까지 나타내준다.

RESTful API의 장점
RESTful API는 그 자체만으로도 API의 목적이 쉽게 이해가 된다.

설계 규칙

1. URI 정보를 명확하게 표현해야 한다.

2. resource는 명사를 사용한다.

ex) GET/user/1 --> GET/users/1
단수,복수는 속한 곳의 규칙을 따라야 한다.
개인적으로 리스트에서 데이터를 가져올 때는 복수로, 특정 개별 데이터에 해당하는 값은 단수

3. resource에 대한 행위를 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.

  • URI에 HTTP Method가 포함되서는 안된다.
  • URI에 동사가 포함되서는 안된다.

ex)
1번 유저를 삭제해줘 --> DELETE /users/1
1번 유저를 가져와줘 --> GET /users/show/1 (x) // GET users/1

resource 사이에 연관 관계가 있는 경우

  • /리소스/고유ID/관계 있는 리소스
    ex) GET/users/{user_id}/profile // 유저중에 특정 유저의 프로필을 달라

4. URI는 / 구분자를 사용하여 자원의 계층 관계를 나타낸다.

ex)
category/1/sub_category/2
user/name (x) --> user-name

5. 대문자 사용을 피하도록 규정

6. 파일 확장자를 URI에 포함시키지 않는다.

ex)
GET user/1/profile-photo.jpg (x)
GET user/1/profile-photo

설계 예시

Path parameter

ex)
POST http://10.58.4.1:8000/products

PATCH http://10.58.4.1:8000/products/1

  • 수정

DELETE http://10.58.4.1:8000/products/1

  • response : status 204

Query parameter

?로 변수를 전달

GET /products?price=3000원
일종의 필터링

?offset=0&limit=100
데이터가 5000개일 때 한 페이지에 모두 담을 수 없기 때문에
100개씩 끊어서 보내주는 것

Path parameter vs Query parameter
GET /products/3 vs GET /prodcts?id=3

Query parameter -> Filtering, Sorting, Searching

  • query parameter는 분류, 검색, 필터링 할 때 사용한다.

만약에 3번 products가 없는데 path parameter로 요청하면..
404(Not Found) 발생!
query parameter로 요청한다면...
[] 빈리스트를 반환하고 오류가 발생하지 않는다.

profile
우아한테크코스 4기 교육생

0개의 댓글