[REST API]Rest API
REST(Representational State Transfer)
웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현, HTTP 프로토콜을 통해 요청과 응답을 정의.
알아보기 쉽고 잘 작성된 메뉴판.
REST 성숙도 모델(RMM)
0단계 - HTTP 사용
1단계 - 개별 리소스와의 통신 준수
2단계 - HTTP 메소드 원칙 준수
3단계 - HATEOAS 원칙 준수
1단계
웹에서 사용되는 모든 데이터나 자원을 HTTP URI로 표현
자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용, 요청하고 받는 자원에 대한 정보를 응답으로 전달
엔드포인트란 메소드는 같은 URL들에 대해서도 다른 요청을 하게끔 구별하게 해주는 항목
API가 서버에서 자원(resource)에 접근할 수 있도록 하는 URL
GET / users / 1;
여기서 엔드포인트는 users, users를 통해 자원에 대한 정보에 접근
2단계
GET 메서드는 body를 가지지 않기 때문에 query parameter를 사용하여 필요한 리소스를 전달
응답 코드는 201 Created 로 명확하게 작성
Location 헤더에 작성된 URI를 통해 확인할 수 있도록
상황에 맞는 메소드를 사용해야한다.
GET / users / 1; // 유저 정보를 가져올 때
POST / users / 2; // 유저 정보를 추가할 때
메서드 작성 주의 https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
- GET은 서버의 데이터를 변화시키지 않는 요청에 사용
- POST는 요청마다 새로운 리소스를 생성, PUT은 요청마다 같은 리소스를 반환. 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)이라 함. 멱등성을 가지는 메서드(PUT)와 그렇지 않은 메서드(POST)는 구분하여 사용.
- PUT은 교체, PATCH는 수정으로 사용
3단계
응답에 리소스의 URI를 포함한 링크 요소를 삽입
링크 요소는 응답을 받은 다음에 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함
REST API 디자인 모범사례
https://www.freecodecamp.org/korean/news/rest-api-mobeom-sarye-rest-endeupointeu-seolgye-yesi/
-
데이터를 보내거나 받을 때 JSON 포맷 사용
-
엔드포인트는 명사, 복수명사
-
에러 핸들링을 위해 HTTP 상태 코드 포함
- 관계를 보여주기 위해 엔드포인트 중첩사용 https://www.codestates.com/course/growthmarketing https://www.codestates.com/course/blockchain 3단계 이상은 가독성이 떨어짐
- 데이터를 받을 때 필터링, 정렬, 페이지 등을 나눔 데이터가 클 때 유용 https://kream.co.kr/search?category_id=2 위 엔드포인트는 id가 2인 게시물만 받아온다
- 보안을 위해 SSL을 적용
- 버전 명시
- 정확한 API 문서 제공
- 해당 API에 대한 엔드포인트
- 해당 엔드포인트에 대한 요청 예시
- 다양한 언어 지원
- 각 상태 코드에 대한 다른 에러 메시지 리스트
REST API 참고 2
댓글남기기