본문 바로가기

개발(합니다)/방법론

RESTful API 특징과 작성 시 지켜야 할 규칙

반응형


REST API란

웹 어플리케이션에서 제공하는 모든 자원을 URI를 할당하여 활용 하는 방식


GET, POST, DELETE, PUT이 대표적입니다.

생겨난 이유

하드웨어의 발전과 소프트웨어 발전으로 인해 프레임 워크/라이브러리의 발전과 앱의 등장했고 클라이언트와 서버의 분리로 생겨났습니다. 

하나의 어플리케이션에서 클라이언트와 서버를 관리하던 추세에서 앱의 등장이 있었고 확장성과 안전성을 위해 분산 어플리케이션과 API 서버가 일반화 되고 있습니다.




작성 시 지켜야 할 규칙



1.복수 명사를 사용합니다.

ex) users


2. GET(read), POST(create), PUT(update), DELETE(delete) 각각의 기능을 지킵니다.

ex) GET /user/123?delete : GET을 사용하고 삭제를 요청하면 안됩니다.


3. POST로 arguments를 보내지 않도록 합니다.

ex) RESTful API보안은 HTTP header에 인증정보를 포함하여 https로 처리하는 방법

ex) OAuth2가 있습니다.


4. Sub-Resource를 관계 설정을 위해 사용합니다.

ex) GET /users/123/friends : 유저 123의 친구목록을 보여주어라

ex) GET /users/123/friends/1 : 유저 123의 친구 1번을 보여주어라


5. camlCase 표기법을 사용합니다.

ex) 단봉 낙타 표기법 : selectName

ex) 스네이크 표기법 : select_name


6. HATEOAS를 사용합니다. :link를 제공하여 동적으로 URL을 관리 하는 방법입니다.

ex) {

"name" : "kim"

"link" : [{

"rel" : "self",

"href" : "http://localhost:8080/addressServer"

}]

}


7. Filtering을 지원합니다. 

ex) GET /users?name=kim


8. 순서 정렬

ex) GET /users?sort=-name(내림차순),+address(오름차순) +와-로 구분


9. field selection : 원하는 필드만 볼 수 있게 API 되어야 합니다.

ex) GET /users?fields=name,age,address


10. paging : 몇개의 데이터를 보여줄것인지 정합니다.

ex) GET /users?offset=10&limit=5


11. 페이징시 사용자 전체 개수를 보낼 때는 custom HTTP header : x-Total-Count로 보냅니다.


12. 버전 관리를 한다. v로 시작

ex) /address/api/v1


13. Error처리해서 에러 이유를 되돌려줍니다.

ex) 

200 OK

201 CREATED

400 BAD REQUEST

500 INTERNAL SERVER ERROR


14. 보안으로 session은 사용하지 않고 매 Request마다 인증합니다.


15. HTTPS만 사용합니다.


16. Query String을 사용합니다.


지켜야 할 것들이 많습니다.

RESTful하다~라고 하려면 이정도는 지켜줘야 한다고 합니다.


반응형