API란?(REST API)

김희산·2023년 3월 2일
0

TIL

목록 보기
12/23

API란 다양해진 애플리케이션의 필요에 대응하여 아주 많이 쓰이고 있지만 UI가 없어 추상적인 관계로 그 개념을 이해하기가 약간 힘들 수 있다.

API란?

API는 “Application Programming Interface”의 약자이고 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타내고 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다.

즉, 간단히 말해서 데이터를 요청하고 응답하는 전부이다.

API의 종류

현재에는 API의 구조를 이야기 할 때에, 가장 대표적인 두가지 방식을 이야기 한다. SOAP API와 REST API 이다. 비슷하지만 서로 다른 방법이다.

SOAP(simple Object Protocol)는 프로토콜이고, REST(Representational State Transfer)는 분산 시스템 설계를 위한 아키텍쳐 스타일이다.

REST

Representational State Transfer

  • REpresentational : 대표적인
  • State : 상태의
  • Transfer : 전송

오늘은 REST 에 대해 자세히 얘기해보겠다. 개발 공부를 하다보면 자주 듣는 용어가 특히 REST API이다. 추상적인 개념이라서 그런지 정확하게 감이 오질 않는다. 그리고 ‘RESTful 하다’, RESTful API 등 알듯 말듯 하면서 스스로 설명하기에는 개념이 잘 잡히지 않는다.

  • RESTful : REST를 모두 만족하는 것이다.
  • RESTful API : REST 아키텍쳐 원칙을 모두 만족하는 API로 HTTP 프로토콜 장점을 살릴 수 있는 네트워크 기반 아키텍쳐이다.

특징

  • Statelessness (무상태성)

    • 클라이언트가 보내는 모든 request를 독립적으로 수행한다.
    • 각 request들끼리 서로 연관되어 있지 않아서 서버는 각 request를 완전히 독립적으로 처리 가능하다.
  • Layered System (계층화)

    • 클라이언트와 서버 사이에 계층화 가능하다.
    • 예를 들어, proxy 서버나 암호화 계층 등 다양한 중간 매체를 사용 가능하다.
  • Cacheability (캐시가능)

    • Restful 웹 서비스는 캐싱을 지원한다.
    • 클라이언트는 response를 필요한 저장, 서버는 response time 감소

장점

Scalability (확장가능성)

  • 서버와 클라이언트의 상호작용을 최적화 함으로써 시스템의 규모를 효율적으로 확장/축소 시킬 수 있다.
  • 예를 들어, 무상태성은 서버의 부하를 줄이고, 잘 관리된 캐시는 클라이언트-서버의 상호작용 과정을 적게 만든다.

Flexibility (유연성)

  • 서버와 클라이언트가 분리되어 있기 때문에 유연하게 움직인다.
  • 무슨 말이냐면 클라이언트와 서버가 request, response만 주고 받기 때문에 한 쪽의 platform이나 technology가 바뀌더라도 반대편에서 영향을 받지 않는다.
  • 계층화가 이러한 탄력성을 더욱 더 증대시킬 수 있다.

Independence (독립적)

  • 사용되는 기술과 독립적으로 쓰이기 때문에 REST API를 다양한 언어, 어플리케이션에서 사용 가능하다.

더 자세한 내용들은 참고자료를 확인하길 바란다. 일단 개념만 잡고가고 더 자세한 개념과 이해는 추후에 공부할 예정이다.

참고자료
https://jnhro1.github.io/web/2021/06/13/REST.html
https://dongwooklee96.github.io/post/2021/03/28/rest-api-보안-및-인증-방식.html
https://aws.amazon.com/ko/what-is/api/?nc1=h_ls

profile
성공은 제로섬 게임이 아니라 주변인들과 함께 나아가는 것이다.

0개의 댓글