- REST API에 대해 이해할 수 있다.
- REST 성숙도 모델에 대해 이해할 수 있다.
- REST API 문서를 읽을 수 있다.
- REST API에 맞춰 디자인할 수 있다.
- Open API와 API Key에 대해 이해할 수 있다.
웹 에플리케이션에서는 HTTP 메서드를 이용해 서버와 통신한다.
GET을 통해 웹페이지나 데이터를 요청하고
POST로 새로운 글이나 데이터를 전송하고
DELETE로 저장된 글이나 데이터를 삭제할 수 있다.
👉🏻 클라이언트와 서버가 HTTP 통신할때 어떤 요청을 주고 받느냐에 따라 메서드의 사용이 달라진다.
👉🏻 요청과 응답을 할 때 지정된 형식으로 주고받을 수 있는 수단을 API라고하며
👉🏻 이걸 "어떻게" 주고 받아야 하느냐? => REST API 를 알아보자
REST API는 무슨뜻 ?
Representational State Transfer 직역하자면 대표 상태 전송
- 웹에서 사용되는 모든 데이터나 자원을 HTTP URI로 표현
- HTTP method를 통해 요청과 응답을 정의
- 해당 자원(URI)에 대한 CRUD 작동을 적용
HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 약속하는 형식이기 때문에 기술에 구애받지 않는다.
REST API를 디자인하는 방법
=> 리차드슨의 4단계 성숙도 모델
1. 웹에플리케션 상에 존재하는 모든 리소스에 대해 고유의 URI를 부여하고
2. HTTP Method를 이용해 리소스에 대해 CRUD명령을 적용
0단계 | 단순히 HTTP 프로토콜 사용 |
1단계 |
여기서는 개별 리소스와의 통신을 준수해야한다? 👉🏻 웹에서 사용되는 모든 데이터나 자원을 HTTP URI로 표현한다. 따라서 👉🏻 모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야하며 👉🏻 요청하고 받는 자원에 대한 정보를 응답으로 전달해야한다. |
🔜요청 0단계에서는 요청에서의 엔드포인트로 모두 /appointment 사용 1단계에서는 요청하는 리소스가 무엇인지에 따라 다른 엔드포인트 사용 엔드포인트 작성시에는 동사, HTTP메서드, 행위에 대한 단어 사용지양 리소스에 집중해 명사형태의 단어로적는것이 바람직하다. |
|
🔙응답 사용한 리소스에 대한 정보와 함께 리소스사용에 대한 성공/실패 여부를 반환 |
|
2단계 | CRUD에 맞게 적절한 HTTP 메서드를 사용하는것에 중점 0,1단계에서는 모든 요청을 CRUD와 상관없이 POST메서드를 사용함 2단계에 따르면 이는 CRUD에 따른 적합한 메서드를 사용한 것이 아님 예) 예약 가능 시간 확인 => 예약 시간 "조회(READ)" 특정 시간 예약 => 특정 시간 예약 "생성(CREATE)" 예약 가능 시간을 조회(READ) 하기 위해서 GET요청을 보내고 이때 GET메서드는 body를 가지지 않기 때문에 qeury parameter를 사용하여 필요한 리소스를 전달 예약을 생성(CREATE)하기 위해서는 POST 메서드를 사용하여 요청을 보내야 하며 POST 요청에 대한 응답이 어떻게 반환되는지가 중요함 이 경우 응답은 새롭게 생성된 리소스를 보내주기 때문에 응답코드는 201 Created 로 명확하게 작성해야 하며, 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 하면 완벽하게 REST성숙도 모델의 2단계를 충족한 것이라고 볼 수있다. HTTP 메서드 규칙 - GET : 서버의 데이터를 변화하지 않는 요청에 사용 - POST : 요청마다 새로운 리소스를 생성하고 // 멱등성 X - PUT : 요청마다 같은 리소스를 반환 => 이런특징을 멱등(idenmpotent) mi.chin //교체용도 - PATCH : // 수정용도 API를 작성할때 REST 성숙도 모델의 2단계 까지 적용하면 대체로 잘 작성된 API라고 한다. |
3단계 | HATEOAS(Hypermedia As The Engine Of Application State) 어플리케이션 상태의 엔진으로써의 하이퍼미디어? 가 몬데 3단계의 요청은 2단계와 동일하지만 응에는 리소스이 URI를 포함한 "링크" 요소를 삽입하여 작성 이때 응답에 들어가게 되는 링크요소는 응답을 받은 다음에 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함하고있다 예) 예약 가능 시간 확인 => 예약 할 수 있는 링크 삽입 예약 완료 => 예약 확인 링크 사입 => 응답 내에 새로운 링크를 넣어 새로운 기능에 접근 할 수 있도록 하는 것! |
Open API
누구에게나 열려있는 API로, 정해진 이용 수칙에 따라 사용하고 제한사항이 있을 수 있다.
API Key
API를 사용하기 위해서는 서버의 문을 열 수 있는 API Key가 필요하다.
서버를 운용하는데는 비용이 들기 때문에 API Key형태로 자원에 접근할 수 있는 권한을 제공한다.
클라이언트가 서버에 데이터를 요청할 때 API Key를 같이 전달해야 원하는 응답을 받을 수 있다.
대기업의 REST API 가이드라인
'JavaScript' 카테고리의 다른 글
UI/UX (2) | 2023.04.13 |
---|---|
CORS (0) | 2023.04.04 |
HTTP/네트워크 기초 (1) | 2023.03.28 |
React State & Props (2) | 2023.03.24 |
React SPA React Router (4) | 2023.03.23 |