REST API
좋은 REST API를 디자인 하는 방법
- REST 성숙도 모델(RMM)
- REST API를 실용적으로 잘 적용하기 위한 모델
- 총 4단계(0~3Lv), 2단계까지만 적용해도 좋은 API 디자인, 3단계는 이상점
- 0단계: HTTP protocol 사용
- 단순히 HTTP 프로토콜을 사용하는 기초 단계
- 1단계: 개별 리소스와의 통신 준수
- 모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야 함
- 요청하고 받은 자원에 대한 정보를 응답으로 전달애햐 함
- 엔드포인트 작성 시에는, 동사, HTTP method, 어떤 행동에 대한 단어 사용은 지양
- 리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직함
- 응답 또한 리소스와 그에 대한 정보, 사용 성공/실패 여부를 반환해야 함
- 2단계: HTTP Method 원칙 준수
- CRUD에 맞게 적절한 HTTP 메소드를 사용하는 것에 중점
- 서버의 데이터를 변화시키지 않는 요청에는 GET
- 새로운 리소스를 생성할 때에는 POST, PUT은 요청마다 같은 리소스를 반환(멱등성을 가짐)
- 교체는 PUT, 수정할 때에는 PATCH
- 그에 따른 응답코드도 적절하게 사용해야 함
- 단순 조회하는 GET에는 200(OK), 새로 생성하는 POST에는 201(Created) 등
- 3단계: HATEOAS 원칙 준수
- Hypertext As The Engine Of Application State라는 하이퍼미디어 컨트롤을 적용
- 요청은 2단계와 동일
- 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성
- 응답 후, 유저가 할 수 있는 다양한 액션들을 위한 링크를 넣어 새로운 기능에 접근할 수 있게 돕는다
- 이 링크는 유저가 좀 더 쉽고 효율적으로 리소스와 기능에 접근하도록 하는 트리거가 되어준다
Open API, API Key
- Open API: 정부에서 제공하는 공공데이터와 같이 누구에게나 열려있는 API
- 무제한이라는 의미는 아님, 기관이나 API마다 정해진 이용 수칙과 제한 사항(가격, 정보의 제한 등)
- 대표적인 예시로, Open Weather Map에서 제공하는 날씨 API
- 제한적으로 날씨 API를 사용: 프리 플랜에서 분당 60회, 월 최대 100회 호출이 가능
- 데이터를 JSON 형태로 응답
- API Key: API를 사용하기 위한 키코드
- 서버의 리소스를 사용하기 위한 접근 권한을 전달하는 방식
- 가끔, API key가 필요 없는 경우도 있음
POSTMAN 연습
- message server에 POST로 메세지를 올릴 때에, 메세지에 현재 시각을 스탬핑 하고 싶었음
- pre-request script에 아래를 추가해주면, body에 담긴 "date": "{{current_timestamp}}"의
value가 현재 시각으로 찍혀 보내지게 된다
- 관련 링크
var current_timestamp = new Date();
postman.setEnvironmentVariable("current_timestamp", current_timestamp.toISOString());
{"username":"EBinY","text":"what time is
it?","roomname":"myroom","date":"2021-11-19T05:54:32.644Z"}