blues_log
article thumbnail

API(Application Programming Interface)란?

  • API 는 다른 소프트웨어 시스템과 통신하기 위해 따라야하는 규칙을 정의한다.
  • 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다.
  • 여기서 Interface는 서로 다른 두 개의 시스템, 장치 사이에서 정보를 주고 받는 경우의 접점이나 경계면을 의미한다.

 

즉, API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.

  • 클라이언트는 웹에서 정보에 액세스하려는 사용자이다. API를 사용하는 사람이거나 소프트웨어 시스템일 수 있다.
  • 리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보이다.

 

서로 다른 애플리케이션이 약속한 방식의 API 요청을 수행하면 정해진 결과물을 반환한다.


RESTful API란?

  • REST(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.
  • REST 아키텍처 스타일을 따르는 API를 REST API라 한다.
  • REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.

자신이 만든 서버의 API가 http를 준수하며 잘 설계되어있으면 RESTful 하게 설계되어 있다고 할 수 있다.


RESTful API의 이점

확장성

REST API를 구현하는 시스템은 REST가 Client-Server의 상호 작용을 최적화하기 때문에 효율적으로 크기 조정을 할 수 있다.

유연성

RESTful Web Service는 완전한 Client-Server 분리를 지원한다.

각 부분이 독립적으로 발전하기 때문에 서버의 변경이 클라이언트에 영향을 주지 않는다.

독립성

REST API는 다양한 프로그래밍 언어로 작성할 수 있다.


요청의 구성요소

URI

REST 서비스의 경우 서버는 일반적으로 URL을 사용하여 Resource를 식별한다.

Method

HTTP Method는 Resource에 수행해야 하는 작업을 서버에 알려준다.

  • GET : Read,  서버에 지정된 URL에 있는 Resource에 접근한다.
  • POST : Create, 서버에 데이터를 전송한다.
  • PUT : Update, 서버의 기존 Resource를 업데이트한다.
  • PATCH : Resource를 부분적으로 변경할 때 사용한다. PUT과 달리 변경할 값만 요청값에 포함되면 된다.
  • DELETE : Delete, Resouce를 제거한다.

응답의 구성요소

Status line

요청 성공 또는 실패를 알리는 3자리의 상태 코드

예를 들어, 2XX는 성공, 3XX는 URL 리디렉션, 4XX와 5XX는 오류를 나타낸다.

Message body

서버는 요청 헤더에 포함된 내용에 따라 적절하게 메세지를 응답한다.

XML 또는 JSON형식으로 반환한다.

Header

응답에 대한 추가 Context를 제공하고 서버, 인코딩, 날짜 및 콘텐츠 유형과 같은 정보를 포함한다.

 


REST의 설계 규칙

  • URI는 명사, 소문자를 사용하고 행위에 대한 표현을 쓰지 않는다.
  • "/"를 사용하여 계층 관계를 표현한다. 
  • URI의 마지막에는 "/"를 붙이지 않는다.
  • URI가 긴 경우에는 하이픈(-)을 사용하여 가독성을 높인다. (언더바는 사용하지 않는다.)
  • 리소스 간에 연관 관계가 있는 경우는 리소스 사이의 관계를 표현한다.

참고 

https://aws.amazon.com/ko/what-is/restful-api/

https://velog.io/@tjseocld/Rest-Api-%EB%9E%80

'Spring' 카테고리의 다른 글

[Spring] WS & WAS  (0) 2023.07.16
[Spring] 그레이들(Gradle)  (0) 2023.06.16
[Spring] Spring MVC  (0) 2023.06.14