restapi
- rest api는 rest를 기반으로 만들어진 api를 의미.
- rest와 rest api, restful api들을 정리해보자.
REST
- Representational State Transfer의 약자
- 자원을 이름으로 구분하여 자원의 상태를 주고 받는것
- 2000년 컴퓨터 과학자 Roy Fielding 박사가 박사 학위 논문에서 처음 정의
- 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침
- 아키텍처 스타일을 구성하는 제약 조건 집합
- HTTP URI를 통해 자원을 명시
- HTTP Method를 통해 CRUD Operation을 적용하는 것을 의미
구성요소
- HTTP URI
- HTTP Method
- 자원에 대한 행위
- Create(Post)
- Read(GET)
- Update(PUT)
- Delete(DELETE)
- HTTP Message Pay Load
설계기준
- server-client 구조
- 서로 독립적인 구조로 만들어진다.
- http를 통해서만 서버와 클라이언트가 통신한다.
- stateless
- 상태를 저장하지 않아 요청마다 필요한 정보를 넣어줘야 한다.
- 서버의 세션을 필요로 하지 않는 의미
- cacheable
- 캐싱허용이 가능하여 캐시가 가능하다.
- 클라이언트의 성능향상과 서버의 확장성을 높일 수 있다.
- layered system 계층화
- 호출과 응답이 서로 다른 계층을 거친다.
- 클라이언트나 서버가 최종어플리케이션과 통신하는지, 중개자와 통신하는지 알수없도록 설계해야 한다.
- uniform interface 인터페이스 일관성
- 동일한 리소스에 대한 모든 api요청은 출처에 관계없이 동일하게 표시
- 리소스가 너무 크지않도록, 필요로하는 정보는 포함되도록 해야 한다.
장단점
- 장점
- http 인프라를 사용하여 별도의 인프라 구축이 없다.
- http 프로토콜을 따르는 플랫폼에서 사용이 가능
- rest api가 의도를 파악하고 쉽게 익힐수있다.
- 단점
- 표준이 존재하지 않아 정의가 필요
- http method가 제한적
- 구형브라우저와 호환되지 않을수 있다.
REST API
- REST 의 원리를 따르는 API
- REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라 부른다.
- RESTful API, RESTful 웹 API, REST API 용어들은 같은 의미로 사용할 수 있다.
- rest 설계규칙을 지킨 시스템을 RESTFul하다 할 수 있다.
- rest의 설계규칙을 못지키면 rest api를 사용하지만, restful하지 않다고 할 수 있다.
- 설계규칙 예시
- get, post, put, delete를 행위 목적으로 잘 활용
- uri는 행위를 표시하지 않기
- 대문자보다는 소문자 활용
- 언더바 대신, 하이픈 사용
- 마지막에 슬래시는 사용않기
- 파일확장자 url포함 하지 않기
- 명사를 사용하며, 컨트롤 자원을 의미하면 예외적으로 동사 사용
- 영어는 복수형으로 사용하기
다른 참고할 내용
- REST API와 다른 사용법으로 GraphQL도 존재
- REST와 SOAP도 비교하기도 한다.
참고
- https://www.ibm.com/kr-ko/topics/rest-apis
- https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
- https://aws.amazon.com/ko/what-is/restful-api/
- https://www.redhat.com/ko/topics/api/what-is-a-rest-api
- https://dev-cool.tistory.com/32