[Section2] 네트워크 - HTTP / 20230523
🧑🏻💻 TIL(Today I Learned)
✔️ Rest API
💡 REST API
➡️ REST(Representational State Transfer)의 줄임말
➡️ 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
🔎 좋은 Rest API 디자인 하는 법
- 모든 단계를 충족해야 REST API라고 부를 수 있다고 주장하기도 하나 실제로 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있음 → HTTP API 라고 부름
REST 성숙도 모델 - 0단계
➡️ 0단계에서는 단순히 HTTP 프로토콜을 사용하기만 해도 됨, 이 경우는 해당 API를 당연히 REST API 라고 부를 수 없음, 기본 단계
REST 성숙도 모델 - 1단계
➡️ 1단계에서는 개별 리소스와 통신을 준수해야 함
➡️ REST API는 웹에서 사용하는 모든 데이터나 자원을 HTTP URI로 표현하기 때문에 모든 자원은 개별 리소스에 맞는 엔드 포인트(end point)를 사용해야 한다는 것과 요청하고 받은 자원에 대한 정보를 응답으로 전달해야 한다는 것
엔드 포인트(End Point)?
: 서비스를 사용 가능하도록 서비스에서 제공하는 커뮤니케이션 채널의 한쪽 끝
즉 요청을 받아 응답을 제공하는 서비스를 사용할 수 있는 지점을 의미
API가 서버에서 리소스에 접근할 수 있도록 가능하게 하는 URL
➡️ 어떤 리소스를 변화시키는지 혹은 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하기 때문에 적절한 엔드 포인트를 작성하는 것이 중요!
➡️ 엔드 포인트 작성 시에는 동사, HTTP 메서드, 어떤 행위에 대한 단어 사용은 지양하고 리소스에 집중해 명사 형태의 단어로 작성하는 것이 좋음
➡️ 요청에 따른 응답으로 리소스를 전달할 때에도 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/ 실패 여부를 반환해야 함
REST 성숙도 모델 - 2단계
➡️ CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점
➡️ 만약 병원을 예약한다고 할 때 예약 가능한 시간을 확인한다는 것은 조회(READ) : GET 메서드 사용하여 요청
특정시간에 예약한다는 것은 예약을 생성(CREATE) : POST 메서드 사용하여 요청
➡️ 생성하는 경우 응답은 새롭게 생성된 리소스를 보내주기 때문에 응답 코드도 201 Created로 명확하게 작성해야 하며 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI를 통해 확인할 수 있도록 해야만 2단계를 충족한 것이라고 할 수 있음
메서드 사용할 때의 규칙
1. GET 메서드의 경우 서버의 데이터를 변화시키지 않는 요청에 사용해야 함
2. POST는 요청마다 새로운 리소스를 생성하고 PUT은 요청마다 같은 리소스 반환
→ 매 요청마다 같은 리소스 반환하는 특징 : 멱등성(idempotent)
→ 멱등성을 가지는 메서드 PUT 과 그렇지 않은 POST 는 구분해서 사용해야 함
3. PUT 과 PATCH도 구분하여 사용해야 함
→ PUT은 교체, PATCH는 수정의 용도로 사용
REST 성숙도 모델 - 3단계
➡️ HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤 적용
➡️ 3단계의 요청은 2단계와 동일하지만 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다는 것이 다름
➡️ 응답에 들어가는 링크 요소는 응답을 받은 다음에 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤 포함하고 있음
➡️ 예를 들어 예약 가능 시간을 확인한 후에 예약을 할 수 있는 링크 삽입이라거나 특정 시간에 예약을 완료하고 나서 그 예약을 다시 확인할 수 있도록 링크를 작성해 넣는 것 등
💡 Open API 와 API Key
🔎 Open API
➡️ 정부에서 제공하는 API의 경우 Open API 형태로 공공데이터를 제공함, 말 그대로 누구에게나 열려있는 API이나 "무제한으로 이용할 수 있다" 는 의미는 아님
➡️ 각 기관이나 API마다 정해진 이용 수칙이 있고 그 이용 수칙에 따라 제한사항이 있을 수 있음
🔎 API Key
➡️ API를 이용하기 위해서는 API Key가 필요함
➡️ 클라이언트의 요청에 따라 서버에서 응답한다는 말은 결국 서버를 운용하는 데 비용이 발생한다는 것, 그래서 아무 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무도 이유도 없음
➡️ 로그인된 이용자에게만 자원에 접근할 수 있는 권한을 API Key 형태로 제공하고 데이터를 요청할 때 API Key를 같이 전달해야만 원하는 응답을 받을 수 있음
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section2] 데이터베이스 - 설계 (0) | 2023.05.26 |
---|---|
[Section2] 데이터베이스 - SQL (0) | 2023.05.24 |
[Section2] 네트워크 - 웹 애플리케이션 작동 원리 / 20230522 (0) | 2023.05.22 |
[Section2] 06. 자료구조와 알고리즘 3 / 20230517 (0) | 2023.05.18 |
[Section2] 04. 자료구조와 알고리즘 - Graph, Tree 1 / 20230515 (1) | 2023.05.16 |