-
BEB Section 2 - HTTP/네트워크 실습2nd of BEB/Codestates 2021. 12. 11. 23:11

REST API[1]?
웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 request와 response를 정의하는 방식이다.
사실 이렇게 하면 나도 뭔 말인지 몰라요.쉽게 설명하자면 메뉴판을 받았는데 간결하게 설명한 메뉴판이 읽기 쉬워 주문 가능하지, 복잡하게 적어놓은 메뉴판은 읽기 어려워 주문하는 것 조차 어려운 법이다.
리소스를 서로 주고받기 위해선 잘 알아볼 수 있는 REST API를 디자인하는 것이 중요하다.
좋은 REST API[2] 디자인하기
리처드슨의 모델을 기준으로 0단계에서 3단계, 총 4단계로 디자인할 수 있다고 나와있다. 사실 3단계까지 지키는 것만으로도 어렵기 때문에 2단계까지만 지켜도 좋은 API를 디자인했다고 할 수 있다. 이럴 때 우린 이걸 HTTP API 라고 부르기로 했다.
- 0단계 : HTTP 사용
- 1단계 : 개별 리소스와 통신 준수
- 2단계 : HTTP 메소드 원칙 준수
- 3단계 : HATEOAS 원칙 준수
REST 0단계
- 단순하게 HTTP 프로토콜을 사용하기만 한다. 좋은 REST API를 작성하기 위한 기본적인 단계이다.
REST 1단계
- 개별 리소스와의 통신을 준수한다.
- 모든 리소스는 개별 리소스에 맞는 endpoint를 사용한다는 것과 request하고 받은 리소스에 대해 정보를 response로 전달해야한다.
- endpoint 작성 시 동사, HTTP 메소드, 행위에 대한 단어는 지양하고, 명사 형태의 단어로 작성하는 것이 바람직하다.
REST 2단계
- CRUD에 맞게 HTTP 메소드를 사용하는 것에 중점을 둔다.
- request에서 새롭게 생성된 리소스를 보내주기 때문에 201 코드로 명확하게 작성해야하고, 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI 통해 확인할 수 있도록 해야한다.
- GET : 서버의 데이터에 변화시키지 않는 request을 사용
- POST : request마다 새로운 리소스 생성
- PUT : request마다 같은 리소스 반환, 교체의 용도
- PATCH : 수정의 용도
- 매 요청마다 같은 리소스를 반환하는 특징을 멱등한다.
- request에서 새롭게 생성된 리소스를 보내주기 때문에 201 코드로 명확하게 작성해야하고, 관련 리소스를 클라이언트가 Location 헤더에 작성된 URI 통해 확인할 수 있도록 해야한다.
- 2단계까지 적용하면 대체적으로 잘 작성된 API라고 한다.
REST 3단계
- response에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성하는 것이 다르다.
- 클라이언트 개발자들이 response에 담겨져 있는 링크들을 본다면, 링크들을 조금 더 쉽고 효율적으로 리소스와 기능에 접근할 수 있게 하는 트리거가 될 수 있다.
Postman
Postman API Platform | Sign Up for Free
Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.
www.postman.com
여기서 계정 생성하게 되면 아래와 같이 그림이 뜬다.

Postman API GET method - GET 하기 위해 URL와 endpoint를 함께 입력창에 넣어준다. 그럼 저렇게 있던 값들을 모두 다 받아올 수 있다.

Postman API POST method - POST 하기 위해 넣고 싶은 정보를 raw 값으로 입력해주고, JSON 형식으로 입력해서 보내준다. 그럼 맨 위 사진처럼 포스팅 된 모습을 볼 수 있다.
참고 문헌
[1] Architectural styles and the design of network-based software architectures, Roy Thomas Fielding, ACM 2000, https://dl.acm.org/doi/10.5555/932295
Architectural styles and the design of network-based software architectures | Guide books
The World Wide Web has succeeded in large part because its software architecture has been designed to meet the needs of an Internet-scale distributed hypermedia system. The Web has been iteratively developed over the past ten years through a series of modi
dl.acm.org
[2] Richardson Maturity Model, Leonard Richardson, https://restfulapi.net/richardson-maturity-model/
'2nd of BEB > Codestates' 카테고리의 다른 글
BEB Section 2 - Web Server 기초 (3) 2021.12.16 BEB Section 2 - 데이터 흐름의 이해와 비동기 요청 처리 (0) 2021.12.14 BEB Section 2 - HTTP/네트워크 기초 (1) 2021.12.11 BEB Section 1 - JS/Node 비동기 (4) 2021.12.09 BEB Section 1 - React 2 (2) 2021.12.01