![[블로깅]REST-API](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkovsU%2Fbtr6AhW0TT8%2Fvh73Nr21qgvHmEQWTUdg40%2Fimg.jpg)
인트로
오늘은 REST-API네요.. 그래도 어제 내용보다는 훨씬 나은 것 같습니다.
REST-API란?
REST(Representational State Transfer)
웹에서 사용되는 데이터나 자원은 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말합니다.
REST API만으로 HTTP 요청의 내용을 이해할 수 있어야 합니다.
이를 돕기 위해 REST API를 작성할 때 지켜야 할 규칙들이 있는데요.
오늘 다뤄볼 모델은 리차드슨의 REST 성숙도 모델입니다. 총 4단계(0~3단계) 모델로 이루어져 있습니다.
3단계까지 지키기는 힘들기 때문에 2단계까지만 적용하여도 좋은 API 디자인이라고 할 수 있으며, 이를 HTTP API라고도 부른다고 하네요.
REST 성숙도 모델
0단계 - HTTP 프로토콜 사용
HTTP 프로토콜을 사용하기만 하면 0단계를 만족합니다. 0단계는 REST API 작성을 위한 필수이자 기본 단계입니다.
0단계만 만족한 API를 REST API라고는 할 수 없습니다.
1단계 - 리소스 별 엔드포인트 사용과 응답 전달
개별 리소스에 맞는 엔드포인트를 사용하고 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 합니다.
리소스와 응답이 무엇인지에 따라 다른 엔드포인트를 사용하는 것이 핵심으로 적절한 엔드포인트를 작성하는 것이 중요합니다.
엔드포인트는 동사, HTTP 메서드 혹은 행위에 대한 단어보다 리소스에 집중하여 명사 형태의 단어로 작성하는 것이 좋습니다.
2단계 - 적절한 HTTP 메서드 사용
적절한 HTTP 메서드 사용해야 합니다. HTTP 요청 메서드는 클라이언트가 서버에게 리소스에 대한 행위를 알리는 방법인데 이를 이용하여 CRUD를 구현합니다.
보내거나 받거나 교체하거나와 같이 행위에 따라 그걸 가장 잘하는 메서드를 사용하라는 겁니다.
간단한 예시로 조회(READ)의 행위라면 GET 메서드를 사용하는 것이 적절하다~라는 거죠.
HTTP 메서드 사용할 때 규칙이 몇 가지 존재하니 알아봅시다.
- GET 메서드는 서버의 데이터를 변화시키지 않는 요청에 사용해야 합니다.
- POST 메서드는 요청마다 새로운 리소스를 생성합니다.
- PUT 메서드는 요청마다 같은 리소스를 반환합니다. 요청마다 같은 리소스를 반환하는 것을 멱등 하다고 합니다.
- PUT은 교체, PATCH는 수정의 용도로 사용합니다.
HTTP 요청 메서드 | 목적 | 페이로드 |
GET | 모든/특정 리소스 취득 | X |
POST | 리소스 생성 | O |
PUT | 리소스 전체 교체 | O |
PATCH | 리소스 일부 수정 | O |
DELETE | 모든/특정 리소스 삭제 | X |
2단계까지 적용될 경우 잘 작성된 API라고 할 수 있습니다. 가장 중요한 기본원칙은 1,2단계라고 볼 수 있습니다.
3단계 - HATEOAS
시작부터 약어가 등장하는데 약어가 약어가 아닙니다.
HATEOAS(Hypermedia As The Engine Of Application State)라는 하이퍼미디어 컨트롤을 적용해야합니다.그게뭔데..
응답에 리소스의 URI를 포함한 링크 요소를 삽입해 작성하라는 겁니다.
HATEOAS를 사용하면 client 사이드에서 요청 URI을 프로퍼티 키 값으로 사용하기 때문에 URI 수정이 발생하더라도 client 사이드에서는 수정이 이루어질 필요가 없다는 장점이 있습니다.
Open API
말 그대로 open 된 API입니다. open 되어있으나 모두 free라는 뜻은 아닙니다. API마다 정해진 이용 수칙이 있기 때문에 잘 읽어보고 사용해야 합니다.
API를 이용하기 위해서는 API Key가 필요합니다. 데이터를 요청할 때 API key를 포함해야 원하는 응답을 받을 수 있습니다.
다양한 api를 볼 수 있는 공공데이터포털
공공데이터 포털
국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase
www.data.go.kr
CodeStates & 모던 자바스크립트 Deep Dive 내용을 참고하였습니다.
'BootCamp' 카테고리의 다른 글
[블로깅] Redux&FLUX패턴 (1) | 2023.04.24 |
---|---|
[블로깅]UI/UX (0) | 2023.04.13 |
[React-twittler] 자식 컴포넌트에서 부모 컴포넌트로 데이터 보내기 (0) | 2023.03.24 |
[블로깅]객체 지향 프로그래밍 (0) | 2023.03.15 |
[블로깅]클래스와 인스턴스 (0) | 2023.03.15 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!