230209 - API

Cornchip·2023년 2월 9일
0

Today-I-Learned

목록 보기
16/28

목차
1. API란
2. HTTP API
3. REST API



1. API란

  • API(Application Programming Interface)

  • 애플리케이션에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

    즉, 애플리케이션이 어떤 프로그램이 제공하는 기능을 사용할 수 있게 만든 매개체이다.
    API는 컴퓨터나 소프트웨어를 서로 연결한다.

  • API의 한 가지 목적은 서버 시스템이 동작하는 방식에 관한 내부의 프로세스를 숨기는 것으로, 내부의 세세한 부분이 나중에 변경되더라도 프로그래머가 유용하게 사용할 수 있고 일정하게 관리할 수 있는 부분들만 노출시킨다.



2. HTTP API

  • HTTP를 사용하여 프로그램끼리 소통하는 API를 말한다.

  • 대부분의 API는 HTTP라는 통신 규칙으로 소통하는 API이다.

  • HTTP를 사용하지 않는 API

    저사양, 저전력 환경에 적합한 MQTT, CoAP 프로토콜 등이 있다.

  • API는 통신 프로토콜 레벨이 아닌, Class나 Function와 같은 소스코드 레벨이 될 수도 있다.



3. REST API

  • REST(Representational State Transfer)란 네트워크 아키텍처 스타일이다.

  • '네트워크 아키텍처 스타일'이란 네트워크 자원을 정의하고 처리하는 방법 전반을 일컫는다.

  • 2000년도에 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개되었다.

    로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워 하며 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다.

  • 즉, REST는 HTTP를 잘 활용하기 위한 원칙이라고 할 수 있고 REST API는 이 원칙을 준수해 만든 API이다.


1) HTTP를 잘 활용하기 위한 원칙

Representational State Transfer
: 자원의 표현으로 상태를 전달하는 것

  1. URI로 자원(리소스)를 표현해야 한다.
  2. 자원에 대한 행위는 HTTP METHOD(GET, POST, PUT, DELETE, PATCH, etc)로 표현된다.
    위 두가지가 REST한 API를 설계하는 중심 규칙이다.

GET /members/delete/1

위와 같은 방식은 REST를 제대로 적용하지 않은 URI이다.
URI는 자원을 표현하는데 중점을 두어야 한다. delete와 같은 행위에 대한 표현이 들어가서는 안된다.


DELETE /members/1

위의 잘못된 URI를 HTTP METHOD를 통해 수정하였다.


2) HTTP API와 REST API

  • HTTP API와 REST API는 사실 거의 같은 의미로 사용되고 있다.

  • 정확한 차이점으로는 REST API는 HTTP 프로토콜을 따르면서 아래의 4가지 가이드 원칙을 지켜야 한다.

    1. 자원의 식별
    2. 메세지를 통한 리소스 조작
    3. 자기서술적 메세지
    4. 애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어(HATEOAS)
  • 이러한 제약 조건들을 완벽하게 지키면서 개발하는 것을 RESTful API라고 한다.

  • 그러나 실무에서는 이런 방법으로 개발하는 것이 현실적으로 어렵고 구현하기 어렵다.

  • 그러나 이미 많은 사람들이 이 조건들을 모두 지키지 않아도 REST API라고 하기 때문에 HTTP API와 같은 의미로 사용되고 있다.

  • 정확한 REST API의 의미는 위 4가지 원칙을 모두 지키는 것임을 잊지말자.


출처 : https://bentist.tistory.com/37

profile
cornchip

0개의 댓글