학습 목표
- 쿠키의 작동 원리를 이해할 수 있다
- HTTP 헤더의 역할에 대해 이해할 수 있다.
- 표현, 콘텐츠 협상 등 다양한 헤더의 역할에 대해 알 수 있다.
- REST API에 대해 이해할 수 있다.
- REST API 문서를 읽을 수 있다.
- REST API에 맞춰 디자인할 수 있다.
- HTTPS의 개념을 이해할 수 있다.
- HTTP와 HTTPS의 차이점을 이해할 수 있다.
- REST API란?
- REST: Representation State Transfer
- 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
- 성숙도 모델에는 0~3단계까지 있으며, 이를 모두 충족해야 REST API라고 불림
- 그러나 엄밀하게 3단계까지 지키기 어렵기 때문에 2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이런 경우 HTTP API라고 불림
- REST 성숙도 모델 - 0단계
- 단순히 HTTP 프로토콜을 사용하는 것
- REST API를 작성하기 위한 기본 단계
- REST 성숙도 모델 - 1단계
- 개별 리소스와의 통신 준수
- 모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야 하며, 요청하고 받은 자원에 대한 정보를 응답으로 전달해야 함
- 어떤 리소스를 변화시키는지 혹은 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하기 때문에, 적절한 엔드포인트를 작성하는 것이 중요함
- 엔드포인트 작성 시에는 동사, HTTP 메소드, 혹은 어떤 행위에 대한 단어 사용은 지양하고, 리소스에 집중해 명사 형태의 단어로 작성하는 것이 바람직한 방법임
- 요청에 따른 응답으로 리소스를 전달할 때에도 사용한 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환해야 함
- REST 성숙도 모델 - 2단계
- CRUD에 맞게 적절한 HTTP 메소드 원칙 준수
- 요청의 목적에 따라 적절한 메소드를 사용하고, 이에 대한 응답 코드 또한 명확하게 작성해야 하며, 관련 리소스를 클라이언트가 Location 헤어데 작성된 URI를 통해 확인 할 수 있도록 해야 함
- GET 메소드의 경우, 서버의 데이터를 변화시키지 않는 요청에 사용해야 함
- POST 메소드의 경우, 요청마다 새로운 리소스를 생성함
- PUT 메소드의 경우, 요청마다 같은 리소스를 반환해야 함
- 이처럼 매 요청마다 같은 리소스를 반환하는 특징을 멱등하다고 하며, 그렇기에 멱등성을 가지는 메소드 PUT과 그렇지 않은 POST는 구분하여 사용해야 함
- PATCH 메소드의 경우, 수정의 용도로 사용함
- REST 성숙도 모델 - 3단계
- HATEOAS 원칙 준수
- Hypertext As The Engine Of Application State의 약어로, 표현되는 하이퍼미디어 컨트롤을 적용함
- 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성한다는 것이 다름
- 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것
- 이때 응답에 들어가게 되는 링크 요소는 응답을 받은 다음에 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함하고 있음
'Code States > TIL' 카테고리의 다른 글
[0323] HTTP - REST API 문서 작성 (0) | 2023.03.23 |
---|---|
[0323] (페어) HTTP - REST API 문서 작성 (0) | 2023.03.23 |
[0322] HTTP - HTTP 헤더 (0) | 2023.03.22 |
[0322] HTTP - Cookie (0) | 2023.03.22 |
[0321] (페어) Git과 버전 관리 시스템 - Simple Git Workflow (0) | 2023.03.21 |