REST API

굥굥·2021년 9월 9일
0

API

Application Programming Interfaces

응용 프로그램에서 사용 가능하도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스(규격)

1) Server와 Database에 대한 출입구 역할

  • 인가된 사용자에게만 접근성을 부여

2) Application과 기기가 원활하게 통신하도록 함

3) 모든 접속을 표준화


REST

Representational State Transfer

자원의 표현에 의한 상태 전달

HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 자원에 대한 CRUD Operation을 적용하는 것

자원 : Database의 회원 정보
표현 : Users (table name)

REST 구성

1) Resource (자원)

URI

2) Verb (행위)

HTTP Method(GET, POST, PUT, DELETE)

3) Representations (표현)

JSON, XML, EXT, RSS ...

REST 특징

1) Server-Client

  • Server : 자원 제공, API 제공, 로직 처리 및 저장을 책임
  • Client : 자원 요청, 사용자 인증이나 context 등을 직접 관리 및 책임
  • 서로간 의존성 감소

2) Stateless (무상태성)

  • 작업을 위한 상태정보를 따로 저장하고 관리하지 않음
  • session, cookie와 같은 client의 context 정보를 신경쓰지 않아도 됨
  • API 서버는 단순히 client로 부터 들어오는 요청만을 처리
  • 서비스 자유도 상승, 구현 단순

3) Cacheable (캐시 가능)

  • 웹 표준인 HTTP를 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로 활용 가능
  • HTTP의 캐싱 기능 적용 가능
  • HTTP에서 사용하는 Last-Modified 태그, E-Tag를 이용하여 캐싱 구현 가능

4) Uniform Interface (인터페이스 일관성)

  • URI로 지정한 resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행함

5) Layered System (계층화)

  • client는 REST API server만 호출함
  • REST server는 다중 계층으로 구성될 수 있음
  • PROXY, 게이트웨이 같은 네트워크 기반의 중간매체 사용 가능

REST API

REST 기반으로 서비스 API를 구현한 것

1) URI는 정보의 자원을 표현해야 함

2) 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE )로 표현

REST API 설계 규칙

1) 슬래시 구분자(/)는 계층관계를 나타내는데 사용

2) URI 마지막 문자로 슬래시(/)를 포함하지 않음

http://example.com/test 	(O)
http://example.com/test/ 	(X)

3) 하이픈(-)은 URI 가독성을 높이는데 사용

4) 언더바(_)는 URI에 사용하지 않음

5) URI 경로에는 소문자가 적합

6) 파일 확장자는 URI에 포함하지 않음

http://example.com/test/image.jpg	(X)

// Accept Header를 사용해야 함

RESTful

REST를 구현하는 웹 서비스를 나타내는 용어

REST API를 제공하는 웹 사이트

CRUD 기능을 모두 POST로만 처리하는 API는 RESTful하지 못함


HTTP 응답 상태 코드

상태코드
1XX전송 프로토콜 수준의 정보 교환
200client 요청을 정상적으로 수행함
201client가 어떤 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨 (POST를 통한 리소스 생성 작업)
3XXclient는 요청을 완료하기 위해 추가적인 행동을 취해야 함
400client 요청이 부적절
401client가 인증되지 않은 상태에서 보호된 리소스를 요청 (로그인 하지 않은 유저가 로그인 시 사용가능한 리소스를 요청)
403유저 인증상태와 관계 없이 응답하고 싶지 않은 리소스를 client가 요청
405client가 요청한 리소스에서는 사용 불가능한 Method를 이용
5XXserver error

참조

API란?
REST API 제대로 알고 사용하기
[Network] REST란? REST API란? RESTful이란?

0개의 댓글