이번 포스팅의 주제는 RESTful API 디자인 방법이다.
RESTful 한 API를 설계하기 위해서 알아야 할 지침들에 대해 정리 해 보도록 하겠다.
RESTful API 라는 개념은 많은 주니어 웹 개발자들이 알다가도 모를 수 있는 주제라고 생각한다.
'그래서 RESTful 하다는 게 무슨 의미인가요?' 라는 질문을 들었을 때 필자는 정말 간단하게 '데이터를 전달할 수 있는 HTTP 프로토콜 메소드를 사용하는 API' 라고 답 한 적이 있다.
물론 틀린 말은 아니다. 하지만 그게 명확한 정답이라고 스스로 자신 할 수는 없었다.
우선 RESTful API를 간단하게 설명한다면 웹의 장점을 활용한 네트워크 기반의 API 라고 설명할 수 있다. 기존의 HTTP Method 를 그대로 사용할 수 있다. 그리고 웹에 존재하는 모든 자원들에 고유한 URL을 부여해 활용할 수 있다.
REST 아키텍쳐 스타일을 준수해야 하며 간단히 정리하면 아래와 같다.
[GET] /businessLogic (X)
[GET] /business_logic (X)
[GET] /business-logic (O)
[GET] /orders/orderId
[GET] /users
[GET] /chickens
[GET] /shop/{shopId}/category/{categoryId}/price (X)
[GET] /shops/{shipId} (O)
[GET] /category/{categoryId} (O)
가능하면 각각의 콜렉션 별 데이터 로 URL이 끝나는 게 좋다.
[GET] /getUser/{userId} (X)
[GET] /user/{userId} (O)
[POST] /send/1234/comfirm
[GET] /getProduct/shpps/2/products/21
HTTP/1.1 400 Bad Request
{
"msg" : "user not found",
"code" : -200
}
{
productName : "product",
shopName : "CoffeeShop"
}
[GET] /product/thumbnail
Accept : image/jpg
https://api.server.com/v2/product/1234
{
data : [
...
].
total : 54
}
[GET] /products?offset=5&limit=5
[GET] /products?fields=id,name
간단하게 RESTful API를 작성하는 데 도움이 될 법한 정보들에 대해 기록 해 보았다. 다음 포스팅은 Authentication에 대해 작성 해 보도록 하겠다.