REST API란
웹 어플리케이션에서 제공하는 모든 자원을 URI를 할당하여 활용 하는 방식
생겨난 이유
하드웨어의 발전과 소프트웨어 발전으로 인해 프레임 워크/라이브러리의 발전과 앱의 등장했고 클라이언트와 서버의 분리로 생겨났습니다.
하나의 어플리케이션에서 클라이언트와 서버를 관리하던 추세에서 앱의 등장이 있었고 확장성과 안전성을 위해 분산 어플리케이션과 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을 사용합니다.
지켜야 할 것들이 많습니다.
'개발(합니다) > 방법론' 카테고리의 다른 글
TDD 학습 및 실습 정리3(메소드작성법과한계) (0) | 2018.12.26 |
---|---|
TDD 학습 및 실습 정리2(JUnit에 대하여) (0) | 2018.12.22 |
TDD 학습 및 실습 정리1(TDD의 기본사용법) (1) | 2018.12.22 |
Spring의 TDD 특징 및 사용법 정리 (3) | 2018.12.21 |
Stateless와 Stateful 그리고 JWT 특징 (0) | 2018.12.12 |