REST API

Hyunz·2022년 1월 26일
1

cs/web

목록 보기
3/6
post-thumbnail

REST란?

Representational State Transfer (대표 상태 전송)

자원을 이름으로 구분하여 해당 자원의 상태 및 정보를 주고받는 모든 것을 의미한다.

HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

자원이란 ?

해당 소프트웨어가 관리하는 모든 것을 말하며, 문서, 그림, 데이터, 소프트웨어 자체 등이다.

이러한 자원을 주고받을 때, 구분하기 위해 표현을 한다. 자원 구분은 HTTP URI를 통해 명시한다. (HTTP URI는 고유키 같은 느낌이라고 생각하면 될 것 같다.)

상태 및 정보

데이터가 요청되면 자원의 상태(정보)를 전달한다. JSON 또는 XML을 통해 데이터를 주고받는 것이 일반적이다.

  • REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
  • REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이다.

REST 구성 요소

  1. 자원 : HTTP URI
    • 모든 자원에 고유한 ID가 존재하고, 이 자원은 서버에 존재함
    • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 서버에 요청
  2. 행위 : HTTP Method
    • HTTP 프로토콜의 메소드를 사용함
    • GET, POST, PUT, DELETE와 같은 메서드
  3. 표현
    - 클라이언트가 자원의 상태(정보)에 대한 조작을 요청하면 서버는 이에 적절한 응답을 보냄
    - REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Represectation(표현)으로 나타내질 수 있고, JSON 또는 XML이 일반적이다

REST 특징

  1. Server-Client
    • 서로 간 의존성이 줄어듦
    • REST Server가 API를 제공하고 비즈니스 로직 처리 및 저장을 책임진다
  2. Stateless
    • HTTP 프로토콜이 무상태이므로 REST도 무상태성
    • 클라이언트의 내용을 서버에 저장X → 구현이 단순해짐
    • 서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리함
  3. Cacheable(캐시 처리 가능)
    • HTTP 프로토콜 표준에서 사용하는 Last-Modified 태그나 E-Tag를 이용하면 캐싱 구현이 가능하다.
    • 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기 때문에 전체 응답시간, 성능, 서버의 자원 이용률을 향상시킬 수 있다.
  4. Layered System(계층화)
    • 클라이언트는 REST API Server만 호출하고, REST Server는 다중 계층으로 구성될 수 있다.
  5. Code-On-Demand(optional)
  6. Uniform Interface

REST API

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

최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.

API (Application Programming Interface)

컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 즉, 쓰기 쉽도록(컴퓨터와 연결하기 쉽도록) 인터페이스를 만들었다고 생각하면 될 것 같다.

REST API 디자인 가이드

REST API 설계 시 가장 중요한 항목

  1. URI는 정보의 자원을 표현해야 한다.
  2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

ex)

회원정보 가져오는 URI : GET /members/1

회원 추가 : POST /members/2

잘 설계된 API는 URI만 잘 설계된 것이 아닌 그 리소스에 대한 응답을 잘 내어주는 것까지 포함되어야 한다. 정확한 응답의 상태코드만으로도 많은 정보를 전달할 수가 있기 때문에 응답의 상태코드 값을 명확히 돌려주는 것은 생각보다 중요한 일이 될 수도 있다.

RESTful

‘REST API’를 제공하는 웹서비스를 ‘RESTful’하다고 할 수 있다.

일반적으로 REST라는 아키텍처를 구현하는 웹서비스를 나타내기 위해 사용되는 용어이다.



DRF

(장고를 공부하면 자연스레 DRF도 듣게 될 것이다. DRF는 Django REST Framework이며, 장고가 RESTful API를 쉽게 구축하도록 도와준다. 이것은 굉장히 편리하다. 장고에서 view를 만들고 url에 등록을 하면 localhost:8000/등록한url 이 REST API이다. 직접 url을 입력하여 화면에서 볼수도 있다. 어떤 메서드가 사용가능한지, 어떤 필드가 필요한지, 어떤 데이터가 있는지 보여주며 해당 api에서 추가/수정/삭제도 가능하다. 프론트에서는 만들어진 URI를 통해 접근하여 자원에 대한 행위를 한다.)





[참고자료1](https://gyoogle.dev/blog/web-knowledge/REST API.html)
참고자료2
참고자료3

profile
Do my BEST

0개의 댓글