Rest API

😎·2023년 2월 22일
0

📌

오늘 다뤄볼 주제는 Rest API 입니다!
이때까지 모호한 개념으로 알고있던 개념을
좀 확실히 잡고자 글을 적게 되었습니다 : )

정리에 도움을 받은 포스트 출처 : https://velog.io/@hailey199535/TIL-2022.1.20


☝ 먼저 API란 ??

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말로서, 요청과 응답을 사용해서 두 어플리케이션이 서로 통신하는 방법을 정의한다고 합니다

API는 개발자간의 상호협의이자, 요청과 응답을 구성하는 방법에 대한 정보가 들어있다고 한다.
클라이언트 (프론트)가 요청을 보내면, 해당 요청이 갖고있는 정보를 토대로 응답 데이터를 서버 (백엔드)가 전달한다. REST API는 그 중 가장 많이 사용되고 유연한 API의 한 종류라고한다.
클라이언트가 서버에 요청을 데이터로 전송하면, 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 응답 데이터를 다시 클라이언트에 반환하는 과정이다.

API라고해서 꼭 백엔드, 프론트엔드의 소통만을 의미하는 것은 아니고, 굳이 따지면 응용 프로그램에서 사용할수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만드는 인터페이스를 뜻하는 말이라고 한다.


☝ 그렇다면 REST API 는 ??

REST API에서 REST의 약자는 Representational State Transfer라고 한다.
여기서 말 하는 REST를 정리하자면, "표현할 수 있는 어떠한 방식으로 상태를 전송한다" 라는 의미를 갖고 있다고 볼 수 있겠다.

❗️ 쉽게 말해서 HTTP를 잘사용하기 위한 아키텍쳐 스타일이라는 것!


☝ REST API의 구성

REST API는 아래와 같은 구성으로 이뤄져있다.

CRUD 구현 시, 각각 기능에 맞는 http method를 사용해서 소통이 진행되어야 한다.

페이로드가 있는 경우, 클라이언트 쪽에서 해당하는 페이로드를 보내야 서버에선 그 페이로드로 작업을 할 수 있다.

페이로드가 없는 경우는 페이로드를 직접 보내진 않지만, uri에 서버에서 응답받을 때 특정할 수 있는 값을 넣어서 요청을 보내야한다. ex. 특정 게시물의 id값

☝ REST API 규칙.

1 . URI는 정보의 자원을 표현해야 한다.
2 . 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현한다.
3 . 계층 구조는 슬래시로 구분해서 표현한다.
4 . 가독성을 높여하는 경우, 밑줄(_) 보단 하이픈(-)을 사용한다.
5 . 메시지 바디 내용의 포맷은 URI에 표현하지 않고 accept 헤더를 사용한다.

☝ REST API 특징

1. Uniform Interface (유니폼 인터페이스)

  • URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다.

2. Stateless (무상태성)

  • 작업을 위한 상태정보를 따로 저장하고 관리하지 않는다.
  • 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리한다.
  • 클라이언트가 보내는 요청이 매번 개별 요청으로 인식이되기 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.

3. Cacheable (캐시 가능)

  • REST의 가장 큰 특징 중 하나는 HTTP라는 기존 웹표준을 그대로 사용하기 때문에, HTTP가 가진 캐싱 기능을 적용할 수 있다.
  • HTTP 프로토콜 표준에서 사용하는 Last-Modified태그나 E-Tag를 이용한 캐싱 구현이 가능하다.

4. Self-descriptiveness (자체 표현 구조)

  • 클라이언트 쪽에서 REST API 메시지만 보고도 이를 쉽게 이해 하고, 정보를 어떻게 활용할 수 있는지 알 수 있는 자체 표현 구조로 되어 있어야한다.

5. Client - Server 구조

  • REST 서버는 API를 제공하고, 클라이언트는 사용자 인증이나 context(세션, 로그인 정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분된다.
  • 분리되어있기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어든다.

6. 계층형 구조

  • 클라이언트는 REST API 서버만 호출한다.
  • REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있다.
  • PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있다.
profile
개발 블로그

0개의 댓글