[CS] REST API

린다·2021년 10월 27일
0

Computer Science

목록 보기
2/3
post-thumbnail

REST API란?

  • Representational State Transfer(REST) 기반으로 API를 구현한 것
  • 자원을 이름으로 구분하여 해당 자원의 정보를 주고 받는 소프트웨어 개발 아키텍처의 한 형식 ➡️ 주로 JSON, XML로 정보를 주고 받음
  • 네트워크를 통해서 핵심 컨텐츠와 기능을 활용할 수 있도록 제공되는 인터페이스, 아키텍쳐 스타일
  • 자원을 중심으로 엔드포인트(URI)를 생성하고 HTTP 메서드를 통해 동작을 수행함
  • 자원: 서버에 있는 문서, 이미지, 텍스트 등 모든 데이터들
  • 엔드포인트: 자원을 탐색하기 위한 URI, 모든 자원은 고유한 URI를 가지고 있음
  • 기본적으로 웹의 기술과 HTTP 프로토콜을 그대로 활용한다.
  • 네트워크 상에서 클라이언트와 서버 사이의 통신 방식 중 하나!

URI란?

  • Uniform Resource Identifier(통합 자원 식별자)
  • 웹 서버의 자원을 구별하는 식별자, 늘 같은 자원을 보여줄 수 있도록 해주는 식별자
  • URI는 두 종류가 있는데 이에 URL과 URN이 속해있다.

REST 6원칙

1. Uniform Interface
모든 자원이 식별가능해야한다. 모든 이미지에 대한 고유한 주소값이 서버에 있어야하고 그 주소값을 통해서 이미지가 엄청 많다고해도 식별할 수 있어야한다, http method를 통해서 조작됨(http의 큰 골격 위에 rest api가 있음~) 그래서 http의 모습을 많이 닮아있음~~
2. Stateless
클라이언트에 대한 상태는 저장되지 않고 요청에 대한 응답을 전송받으면 연결이 끊김
3. Cacheable
캐시를 처리할 수 있다. http도 캐시에 대한 부분을 특성으로 가지고 있음(이것도 닮아있음) 일정 시간동안 캐시를 만들어둔 후 그 부분을 활용해 서버가 값을 전달할 수 있도록함
이를 통해 서버의 부하 즉, 네트워크 리소스 및 인프라 리소스를 경감시킬 수 있음
4. Self-descriptiveness
자원에 대한 표현? api 주소값만 보고도 그 부분이 어떠한 역할을 담당하고 있는지 명확하게 이해해야한다. ex. movie/detail/actor 영화의 상세정보의 배우정보에 대한 주소
5. Client-Server
클라이언트랑 서버가 서로 요청하고 답할 수 있는 구조로 구성돼있다
6. 계층형 구조

장점

  • 웹의 장점을 최대한 활용한 아키텍처 ➡️ 별도의 프로토콜 구현이 필요하지 않음
  • 특정 언어나 기술에 종속되지않음 iOS, 안드, 웹 모두에서 다룰 수 있음!!!
  • 아키텍쳐가 잘 설계돼있으면 api 의도 직관적 파악이 가능함!! url 구조, api 구조만봐도 어떤 정보를 요청하는지 알 수 있음

단점

  • Overfetching: 필요한 정보의 양보다 더 많이 로딩될 수 있다.
    ex. 정보가 4개만 필요한데 거기서 주는 정보가20개면 20개를 다 받아와야된다..
  • Underfetching: 필요한 정보가 많은데 API가 세분화돼있는 경우 데이터에 대한 추가 요청이 필요할 수도 있음 ➡️ Request가 늘어남
  • Endpoint: 서비스가 커질수록 거쳐가야하는 엔드포인트가 늘어남

cf. RESTful API

  • REST API를 제공하는 서비스 ➡️ RESTful하다

0개의 댓글