코드스테이츠_국비교육/[Section2]

30.02_[HTTP] REST API_22.10.04

생각없이 해도 생각보다 좋다. 2022. 10. 4. 23:09

API

: Application Programming Interface

: 개발자가 프로그래밍 언어로 짠 프로그램을 제어하는 인터페이스

: 구현되어 있는 모든 기능 중에서 원하는 기능을 쓸 수 있게 만든 것

: 규격이 다른 두 프로그램을 이어주기 위한 매개체

>WEB API

: 클라이언트와 서버의 매개체

 

REST API

>의미 및 목적

: 핵심은 '리소스 식별'이다. (여기서 리소스는 URI이다.)

: 대상을 HTTP URI로 표현한다.

: 행위를 HTTP methods로 표현.

=>즉, HTTP URI와 HTTP methods만 보고 직관적으로 유추가 되는 것이 RESTful한 API라고 볼 수 있다.

 

REST 성숙도 모델(REST API 디자인을 위한 4단계 모델)

>0단계

: 단순히 HTTP 프로토콜을 사용하는 것

>1단계

: 개별 리소스와의 통신 준수

: 리소스에 맞는 엔드 포인트 사용(디렉토리 경로와 비슷하다)

/*

엔드 포인트 : 요청하는(응답으로 받게 될) 리소스를 표현.

명사로 사용하는 것이 적절하다. 명사로 사용해야 공통된 부분을 묶기도 용이하고 구분도 명확하게 할 수 있다.

*/

: 요청에 대한 응답으로 전달하는 리소스에는 '사용한 리소스 정보'와 '리소스 사용에 대한 성공/실패 여부'를 반환해야 좋다

>2단계

: CRUD에 맞게 적절한 HTTP methods를 사용하는 것이 좋다.(아래 표 참고)

: body를 가지지 않는 경우, query parameter를 이용하면 추가적인 정보전달에 좋다.

//POST, PUT, PATCH 도 각자 디테일한 특성에 따라 구분하여 사용하여야 한다.

출처: https://ukcasso.tistory.com/63

>3단계

: HATEOAS(Hypertext As The Engine Of Application State)

: 하이퍼미디어 컨트롤을 적용한다.

: response body에 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다는 의미

: 좀 더 효율적이고 다양한 액션을 사용할 수 있게됨.

 

OPEN API

: 정부에서 공공데이터를 위해 제공하는 형태

: OPEN되어 있지만 무제한은 아니다. 각 API마다 정해진 이용 수칙과 제한사항이 존재

 

API Key

: 클라이언트 요청에 따라 서버는 응답한다.

=>즉, 서버는 운용하는데 비용이 발생한다.

: 서버가 허락한 클라이언트에게 데이터를 제공하기 위한 권한이다.

: 대표적으로 로그인된 이용자에게만 API Key를 제공하여 서버를 사용할 수 있게 한다.