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 도 각자 디테일한 특성에 따라 구분하여 사용하여야 한다.
>3단계
: HATEOAS(Hypertext As The Engine Of Application State)
: 하이퍼미디어 컨트롤을 적용한다.
: response body에 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다는 의미
: 좀 더 효율적이고 다양한 액션을 사용할 수 있게됨.
OPEN API
: 정부에서 공공데이터를 위해 제공하는 형태
: OPEN되어 있지만 무제한은 아니다. 각 API마다 정해진 이용 수칙과 제한사항이 존재
API Key
: 클라이언트 요청에 따라 서버는 응답한다.
=>즉, 서버는 운용하는데 비용이 발생한다.
: 서버가 허락한 클라이언트에게 데이터를 제공하기 위한 권한이다.
: 대표적으로 로그인된 이용자에게만 API Key를 제공하여 서버를 사용할 수 있게 한다.
'코드스테이츠_국비교육 > [Section2]' 카테고리의 다른 글
31.02_[DB] SQL, NoSQL_22.10.05 (0) | 2022.10.05 |
---|---|
31.01_[DB] 데이터베이스 개요_22.10.05 (0) | 2022.10.05 |
30.01_[HTTP] HTTP message_22.10.04 (0) | 2022.10.04 |
29.02_[네트워크] 웹 애플리케이션 작동 원리_웹의 흐름_22.09.30 (0) | 2022.09.30 |
29.01_[네트워크] 웹 애플리케이션 작동 원리_기본 배경_22.09.30 (0) | 2022.09.30 |