[Swagger] Swagger와 REST API

지우개·2024년 4월 28일

Swagger

목록 보기
1/2

API란?

API(Application Programming Interface)란 애플리케이션 간의 상호 작용을 가능하게 하는 규약 또는 인테페이스

예시1)

사람 - 자판기 버튼 - 자판기

자판기 버튼이 하나의 API가 됨.
콜라 버튼을 누르면 콜라, 사이다 버튼을 누르면 사이다가 나오는 것은 각 버튼에 따라 반환될 음료를 미리 약속했기 때문.

예시2)

식당 손님 - 종업원 - 요리사

종업원이 하나의 API가 됨.
식당 손님이 메뉴판을 보고 종업원에게 주문, (API 호출)
종업원주방장에게 메뉴 전달, (Request 전달)
주방장는 메뉴를 완성해서 종업원에게 전달, (DB, 비즈니스 로직 등)
종업원식당 손님에게 메뉴 서빙 (Response 전달)

예시3) (API를 사용하지 않았을 경우)

식당 손님 - 주방장

만약 식당 손님주방장에게 먹고 싶은 음식을 바로 요청.

식당은 중식당인데 메뉴를 보지도 않고 스파게티를 주문한다면??

=>
API는 미리 정해둔 규격에 맞춰진 요청만 받을 수 있도록 하는 것이다. 이렇게 한다면 종업원(API)을 통해 요청(Request)과 응답(Response)의 규격을 통일할 수 있고, 허가된 데이터에만 접근을 허용할 수 있다.




REST API란?

REST API(Representational State Transfer API)

  • 서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식
  • REST API 방식에서는 HTTP 요청(POST, GET, PUT, DELETE...)에 대한 응답으로 서버의 자원을 반환함.
  • 서버에서 보내는 응답이 특정 기기에 종속되지 않도록 모든 기기에서 통용될 수 있는 데이터를 반환함.
  • 서버는 클라이언트의 요청에 대한 응답으로 화면(view)이 아닌 데이터(data)를 전송함.
  • 이때 사용하는 응답 데이터는 JSON
  • 즉, REST API는 클라이언트와 서버 사이의 상호 작용, HTTP 요청에 따른 JSON 응답에 대한 약속을 의미



URI란?

  • 네트워크 상에서 자원을 식별하기 위한 문자열의 구성
  • URI는 인터넷에서 요구되는 기본 조건으로써 인터넷 프로토콜에 항상 붙어 다님.

URL이란?

  • 구어적으로 웹 주소라고 일컫고, 네트워크 상에서 웹 자원의 위치를 지정하는 웹 자원에 대한 참조
  • 쉽게 말하면 네트워크 상의 자원의 위치를 나타내는 주소

URL은 URI에 포함됨

즉 url이면 uri이기도 함.

예시)

https://example.io
https://example.io 라는 서버를 나타내기 때문에 URL이면서 URI이다.

https://example.io/images
https://example.io 서버의 images라는 네트워크 상의 자원의 위치를 의미하기 때문에 URL이면서 URI이다.

https://example.io/images/dog.jpeg
https://example.io 서버의 images 디렉터리 아래의 dog.jpeg를 가리키므로 URL이면서 URI이다.

https://example.io/user/123
URL은 https://example.io/user 까지고 원하는 정보에 도달하기 위한 식별자 123을 포함하기 때문에 URI이다. 즉, URI이지만 URL은 아니다.

https://example.io/profile?id=11
https://example.io/profile 까지는 URL이지만 원하는 정보에 도달하기 위한 식별자(여기서는 ?id=11)를 포함하기 때문에 URI가 된다. 즉, URI이지만 URL은 아니다

=>
HTTP 프로토콜을 사용하여 웹 서버와 소통할때, HTTP 메소드는 '무엇을 할것인가(동작)'를, URI는 '어디에 있는 것을 할 것인가(대상 자원)'를 나타냄.

예를 들어, 어떤 웹사이트의 특정 페이지를 보고 싶다면, 그 페이지의 URI에 대해 GET 메소드를 사용하는 요청을 보내는 것.




REST API 이어서...

  • HTTP URI를 통해 자원을 명시하고, HTTP Method (POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD OPERATION을 적용하는 것을 의미.(자원에 대한 처리)
  • 즉, REST는 자원 기반의 구조 (ROA: Resource Oriented Architecture) 설계의 중심에 Resoure가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미.
  • 웹의 모든 자원에 고유한 ID인 HTTP URI 를 부여함.



백 (서버)에서 만든 API를 프론트(클라이언트)가 가져다 쓰려면, 어떠한 API가 있고, 해당 API를 쓰기 위해 어떤 양식을 갖춰야 하는지를 알아야 함.

메뉴판에 어떤 메뉴가 있고, 그 메뉴를 주문하려면 무슨 옵션이 있는지 알아야 하는 것과 동일한 맥락

그래서 작성해야하는게 API 명세서이고, Swagger는 API Spec 문서(==API 명세서)를 자동화해주어 간편하게 API문서를 관리하면서 테스트할 수 있게 해줌.

Swagger란?

  • Swagger는 API의 설계, 구축, 문서화 및 사용을 위한 오픈소스 소프트웨어 도구
  • 특정한 애플리케이션에 존재하는 API 기능을 명세하고, API 기능을 바로 테스트 할 수 있도록 도와줌.
  • 백과 프론트 사이에서 정확히 어떠한 방식으로 데이터를 주고받을 지에 대한 명세를 도와줌.


0개의 댓글