REST API는 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을 말합니다.
REST API를 작성할때 몇가지 지켜야할 규칙들이 있는데,
첫번째로, HTTP 프로토콜을 사용해야 하며
두번째로, 모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야하고, 요청하고 받은 자원에 대한 정보를 응답으로 전달해야 합니다.
세번째로, self-descriptive message 즉 CRUD에 맞게 조회에는 get, 생성에는 post 등 적절한 HTTP 메소드를 사용하는 것에 중점을 둡니다. 또한 post 요청에 대해 응답은 새롭게 생성된 리소스를 보내주기 대문에 응답코드도 201로 명확하게 작성해야하며 관련 리소스를 클라이언트가 Location 헤더에 작성된 uri를 통해 확인 할 수 있도록해야 합니다.
마지막으로 HATEOAS (Hypertext As The Engine Of Application State)라고 표현되는 하이퍼미디어 컨트롤이 적용되어야 합니다. 이 방식은 세번째로 말씀드린 규칙과 동일하지만, 이 단계에서 가장 중요한 포인트는 응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는것입니다.
하지만, 대부분의 REST API는 마지막 두가지인 self-descriptive message와 HATEOAS는 잘 만족하지 못합니다. 그 이유는 API가 json타입이기 때문에 content-type을 json으로 명시하면 앱이 해당 응답의 의미를 알지 못하기 때문입니다.
이를 해결하기 위해 Media type 을 지정한 후 그 타입을 Content-type으로 지정하여 self-descriptive message를 만족시킬수 있으며, 또 다른 방법으로 Link header에 명세를 확인할 수 있는 링크를 넣어 응답에 담는다면 스스로를 설명할수 있는 메세지가 될 수있고 동시에 HATEOAS도 만족시킬 수 있습니다.
완벽하게 RESTful한 API가 되는 방법은 어렵지만, 두번째 단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 이 경우에는 HTTP API라고도 부릅니다.
'기술면접' 카테고리의 다른 글
브라우저 렌더링 (작동) 원리 (0) | 2021.12.08 |
---|---|
lazy loading (0) | 2021.12.06 |
Client Side Rendering 과 Server Side Rendering 의 차이 (0) | 2021.12.06 |
script, script async 와 defer (0) | 2021.12.03 |
CORS란 무엇이고 목적은 어떻게 되는지 설명해주세요. 그리고 NodeJS 기반의 웹 서버에서 CORS를 어떻게 설정하는지 설명해주세요. (0) | 2021.11.19 |