RESTFUL api와 REST api 알아보기

Y b·2024년 3월 13일

서론

프론트엔드로서 백엔드 api를 받아오고, 백엔드가 프론트엔드에게 전해줄 api를 구성하기 위해
프론트엔드는 api 명세서를 작성한다.

그래서 프로젝트를 할 때 get, post, put, delete 등의 메서드를 바탕으로 api 명세서를 작성해왔는데, rest의 개념에 대해 다시 알아볼 필요가 있다.

REST란?

https://restfulapi.net/
REST를 알아보기 전에 http 메서드를 알아야 한다.

http method

http 메서드란 위 서론에 언급했던 get, post, put,delete,patch를 말한다.
https://restfulapi.net/http-methods/ 이 문서에서 자세히 설명하고 있으며,

요약하자면 위의 표처럼 말할 수 있다.

결국에는 데이터를 가져오고 새로 작성하고 수정하고 삭제하는 것을 말한다.
여기에서 부분적으로 업데이트, 모든 것을 업데이트 하냐에 따라 patch와 put으로 나뉜다.

그래서 REST와 착각하지 않아야 하는데

REST는 하나의 아키텍처 스타일이다. REST의 원칙과 제약 조건이 있는데 이중에서 uniform interface 즉 균일한 인터페이스를 적용하기 위해 http 기반 REST API는 HTTP 메서드와 URI를 사용하여 리소스를 식별하는 것이다.

여기서 interface란 결국 RESTful이라고 부르는 REST의 6가지 기본 원칙이다.

REST란?

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
참고: https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

** HTTP URI?
URI는 특정 리소스를 식별하는 통합 자원 식별자(Uniform Resource Identifier)를 의미한다. 쉽게 말하자면, urn+url이라고 보면 되는데, uri이 우리가 흔히 보는 링크 모두를 말한다면,
url은 https부터 host(도메인네임),port, path부분이며
urn은 쿼리 파라미터, fragment(anchor)을 말한다.

단점

표준규약이 존재하지 않고, 사용할 수 있는 메소드가 제한적이다.
구형부라우저가 아직 지원해주지 못하는 부분이 많은데, PUT, DELETE를 사용하지 못하는점, pushState를 지원하지 않는 점을 들 수 있다.
( 그렇다면 PATCH는? 부분적으로 수정하다보면 변경되지 않은 부분이 누락되는 오류로 인해 치명적일 수 있으며 PUT으로 원본 및 수정본을 보내 GET으로 가져올 수 있으므로 PATCH보단 PUT을 이용한다.이로 인해 멱등성을 이야기할 수 있따.)
(
이외에도 다른 메소드들로는 HEAD, CONNECT, OPTION,TRACE 등이 있다.)

장점

http 프로토콜의 인프라를 그대로 사용하여 별도 인프라를 구축할 필요 없으며,
표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하며 서버와 클라이언트의 역할을 명확하게 분리한다.

RESTful이란?

REST API는 REST(REpresentational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API이다. 이러한 이유로 REST API를 RESTful API라고도 한다.

즉, REST라는 아키텍처를 구현하는 웹서비스를 나타내기 위한 용어이며 REST api를 제공하는 웹 서비스를 RESTful하다고 한다. 그래서 RESTful api를 설명하는데 REST가 연결없이 설명되어 있는 경우가 있다. 결국에는 RESTful이란 REST를 REST답게 쓰는 방법이며 일관적인 컨벤션을 통해 API의 이해도 및 호환성을 높이는 것이다.

** RESTful하지 않은 경우? post로만 crud 구성, route에 resoure id 외의 내용 들어가는 경우
참고:https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

6가지 규칙으로 균일한 인터페이스, 클라이언트 서버 구조, 무상태성, 캐싱 가능성, 계층 구조 아키텍처, 자체 표현 구조로 이루어져 있다.

https://hahahoho5915.tistory.com/54

profile
웹 개발자

0개의 댓글