[TIL]04.29

rbw·2022년 4월 29일
1

TIL

목록 보기
17/98
post-thumbnail

REST API

REST API에 대해서 알아보겠습니다

API(Application programming interface)

응용프로그램이나 서비스를 개발하는데 필요한 운영체제(OS)나 라이브러리 등의 특정 기능을 추상화하여 사용하기 쉽도록 만든 인터페이스다.

네이버 로그인을 구현해야 한다면, 네이버에서 제공되는 OpenAPI 를 통하여 로그인 기능을 호출하여 연동할 수 있다.

OpenAPI

이는 개발자라면 누구나 사용할 수 있도록 공개된 API를 말하며, 개발자에게 사유 응용 소프트웨어나 웹서비스의 프로그래밍적인 권한을 제공합니다. 누구나 쓸 수 있는 API라는 뜻입니다.

REST(REpresentational State Trnsfer)

이는 www와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식입니다. 자원의 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다.

API를 구축할때 URI(URL의 상위집합)와 HTTP Method를 활용하여 API의 기능을 추측 가능하게끔 아키텍쳐를 구성하는 원칙 같은 것입니다. REST 원칙을 잘 따른 API를 RESTful API라고 부릅니다.

URI는 특정 리소스를 식별하고, URL은 위치를 가리킵니다.

REST 구성 요소

  1. 자원 (Resource) - URI

모든 리소스는 고유한 주소가 존재하고, 서버에 존재합니다. URI를 통해 리소스를 구분하고 호출합니다.

  1. 행위 (Verb) - HTTP Method

일반적인 CRUD를 뜻합니다.

  1. 표현 (Representation of Resource)

브라우저와 웹 서버간 데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있고, 주로 JSON을 사용합니다.

HTTP Method

  • POST : CREATE 작업에 대한 Method로 주로 서버에 데이터를 추가할 때 사용합니다.
  • GET : READ 작업에 대한 Method로 주로 서버에서 데이터를 읽어올 떄 사용합니다.
  • PUT : UPDATE 작업에 대한 Method로 주로 서버 데이터의 갱신을 위해 사용합니다. (대상 데이터가 전체일 때)
  • PATCH : UPDATE 작업에 대한 Method로 주로 서버 데이터의 갱신을 위해 사용합니다. (대상 데이터가 일부일 때)
  • DELETE : DELETE 작업에 대한 Method로 주로 서버 데이터의 삭제를 위해 사용하빈다.

REST 특징

  1. 서버 - 클라이언트 구조 (Server-Client)

  2. 무상태 (Stateless) : HTTP 프로토콜을 사용하기 때문에 HTTP의 특징인 무상태성을 갖습니다.

HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜입니다. 웹 서버에서 기능을 실행했을 떄 실행된 내용이 유지되지 않는다는 얘기이다. 어떤 기능을 수행하고, 해당 기능을 수행하고 있다는 상태를 유지하지 않는다. 이를 개선하기 위해 Cookie, Session 개념이 도입되었다.

  1. 캐시 처리 가능 (Cacheable) : HTTP 프로토콜에서 사용하는 Last-Modified Tag 또는 E-Tag를 이용해 캐싱을 지원한다.

  2. 계층화 (Layered System) : 클라이언트, 서버 로만 구성 할 수도 있고 중간에 Gateway나 프록시 서버와 같은 미들 웨어를 배치해 계층화할 수 있습니다.

  3. 인터페이스 일관성 (Uniform Interface) : URI로 지정한 리소스에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍처 스타일을 의미합니다.

  4. 자체 표현 (Self-Descriptiveness) : URI만 분서갷도 무슨 기능인지 유추할 수 있다는 특성입니다.

REST 장단점

장점

  • HTTP 인프라 베이스라 REST API를 위한 인프라를 구축할 필요가 없다.
  • HTTP 표준을 따르기 때문에 여러 추가적인 기능을 사용할 수 있다.
  • HTTP를 지원하는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API URI가 의도하는 바를 명확하게 나타내므로 기능을 쉽게 파악할 수 있다.
  • 기능 통합으로 여러 서비스를 통합할 때 생기는 디자인 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준 자체가 존재하지 않아 정의가 필요하다. (그니깐 하기 나름이다.)
  • HTTP Method 형태가 제한적이다. (GET, POST, PUT, PATCH, DELETE)
  • 테스트에 있어 전문성을 요구한다. (Header, dataType 등 HTTP 부가정보 설정)
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.

REST API

REST 원칙을 기반으로 구현된 API를 말하며 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 형태를 말합니다.

REST API 설계 권고 사항

  1. URI 는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
BAD - https://velog.io/@rbw/putData
GOOD - https://velog.io/@rbw/data
  1. 마지막에 슬래시(/)를 포함 하지 않는다.

  2. 언더바 대신 대시를 사용한다.

  3. 행위를 포함하지 않는다

BAD - https://velog.io/@rbw/delete-Data/1
GOOD - https://velog.io/@rbw/data/1
  1. 파일 확장자는 URI에 포함하지 않는다.

REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다고 합니다


참고

https://velog.io/@carrotsman91/REST-API

profile
hi there 👋

0개의 댓글