플레이데이터 - 27일차 REST API 마무리

Kim Hyen Su·2023년 8월 9일

🌟REST API

REST란?

  • Representational State Transfer의 약자.
  • 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템 아키텍처의 한 형식.
  • 주고 받는 자원에 이름을 규정하고 URI에 명시하여 HTTP 메서드를 통해 해당 자원의 상태를 주고 받는 것을 의미.

아키텍처란?

프로그램의 목적을 달성하기 위해 프로그램 내 발생하는 상호작용 등의 시스템디자인에 대한 제약 및 설계를 의미한다.

REST API란?

  • API는 Application Programming Interface의 약자로, 애플리케이션에서 제공하는 인터페이스를 의미.
  • REST API는 REST 아키텍처를 따르는 시스템/애플리케이션 인터페이스.
  • REST 아키텍처를 구현하는 웹 서비스를 Restful하다라고 표현함.

REST 특징

  • 유니폼 인터페이스

    • 일관된 인터페이스
    • REST 서버는 HTTP 표준 전송 규약을 따르기 때문에 어떤 프로그래밍 언어로 만들어졌느냐와 상관없이 플랫폼 및 기술에 종속되지 않고 타 언어, 플랫폼, 기술 등과 호환해 사용할 수 있다.
  • 무상태성

    • 서버에 상태 정보를 따로 보관하지 않는다.
    • 서버는 클라이언트가 보낸 요청에 대해 세션이나 쿠키 정보를 별도 보관하지 않는다.
    • 그러므로 한 클라이언트가 여러 요청을 보내든 여러 클라이언트가 각각 하나의 요청을 보내든 개별적으로 처리한다.
    • 이처럼 구성된 서비스는 서버가 불필요한 정보를 관리하지 않으므로 비지니스 로직의 자유도가 높고 설계가 단순하다.
  • 캐시 가능성

    • REST는 HTTP 표준을 그대로 사용하기 때문에 HTTP 캐싱 기능을 적용할 수 있다. 이 기능을 이용하기 위해 응답과 요청이 모두 캐싱 가능한지에 대한 명시가 필요하며, 캐싱이 가능한 경우 클라이언트에서 캐시에 저장해두고 같은 요청에 대해서는 해당 데이터를 가져다 사용함.
    • 캐시 사용 시 서버의 트랜잭션 부하가 줄어 효율적이며 사용자 입장에서 성능이 개선된다.
  • 레이어 시스템

    • REST 서버는 네트워크 상의 여러 계층으로 구성이 가능하다.
    • 그러나 서버의 복잡도와 관계없이 클라이언트는 서버와 연결되는 포인트만 알면 된다.
  • 클라이언트-서버 아키텍처

    • REST 서버는 API를 제공하고 클라이언트는 사용자 정보를 관리하는 구조로 분리하여 설계함.
    • 이 구성은 서로에 대한 의존성을 낮추는 기능을 한다.

REST의 URL 설계 규칙

  • URL 규칙
    • URI의 마지막에는 '/'을 포함하지 않는다.

      	옳은 예) http://localhost.com/product
          틀린 예) http://localhost.com/product/
      		- 언더바(_)는 사용하지 않는다. 대신 하이픈(-)을 이용함.
      	하이픈은 리소스의 이름이 길어지면 사용합니다.
          옳은 예) http://localhost.com/provider-company-name
          틀린 예) http://localhost.com/provider_company_name
    • URL에는 행위(동사)가 아닌 결과(명사)를 포함함.

      	옳은 예) http://localhost.com/product/123
          틀린 예) http://localhost.com/delete-product/123
          행위는 HTTP 메서드로 표현할 수 있어야 함.
    • URI는 소문자로 작성해야함.

      	URI 리소스는 경로에는 대문자 사용을 피하는 것이 좋다
          일부는 웹 서버의 운영체제는 리소스 경로 부분의 대소문자를 다른 문자로 인식하기 때문이다. 이러한 이유로 RFC3986은 URI 문법 형식을 정의하고 있는데, 호스트의 구성요소를 제외하고 URI의 대문자를 구분해서 정의하고 있다.
    • 파일의 확장자는 URI에 포함하지 않음.

      	HTTP에서 제공하는 Accept 헤더를 사용하는 것이 좋다.

🌟Postman

개요

  • Postman은 개발한 API를 테스트하고, 테스트 결과를 공유할 수 있도록 해주는 API.
  • http(https 포함) 요청을 전송하고 응답을 보여주는 웹 서비스.

사용법

  • Postman download
  • 백엔드 개발자 입장에서 자신이 개발한 서비스 기능을 직접 호출하여 적절한 응답이 나오는지 테스트 할 수 있다.
  1. Create a request 선택.

  2. Request 창에 URL 입력 및 Send 버튼을 누르면 호출.

  3. 호출된 페이지 결과가 서버에서 요청한 형태(JSON)로 출력.

🌟produces와 consumes

  • Mapping 시 입력 받은 데이터의 형태를 강제하여 오류 상황을 줄일 수 있다.
  • 이처럼 데이터의 형태를 강제하기 위해 사용하는 것 중 하나가 MediaType이다.

consumes

  • 요청 시 들어오는 데이터 타입 정의 시 사용.
  • 클라이언트가 서버에게 보내는 데이터 타입을 명시.

produces

  • 반환하는 데이터 타입을 정의.
  • 반환타입이 JSON 강제.
  • 서버가 클라이언트에게 반환하는 데이터 타입을 명시.
profile
백엔드 서버 엔지니어

0개의 댓글