RESTful API 와 API

WONNY_LOG·2023년 5월 23일
post-thumbnail

ApiManager

Restful API 방식을 사용했고, URI별로 data레이어에서 선언해서 사용함
CRUD 규격에 맞춰 셋팅되어있음

API(Application Programming Interface)

  • 구성 요소가 서로 다른 두 소프트웨어가 (데이터를)통신할 수 있게 만든 인터페이스(게이터웨이 역할)
  • 응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어를 제공하는 인터페이스(규격)을 의미
  • api의 사용 방법과 용도에 따라 오픈api와 비공개api정보가 있다.

API 유형

1) private API
: private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행한다. 따라서 제 3자에게 노출되지 않는다.

2) public API
: public API는 개방형 API로, 모두에게 공개된다. 누구나 제한 없이 API를 사용할 수 있는 게 특징이다.

3) partner API
:partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.

API 통신방식

1) SOAP API(Simple Object Access Protocol)

  • 그 자체로 프로토콜이다
  • 데이터 포맷으로 XML만 사용한다 (메세지 통신 포맷)
  • 기능위주인 구조화된 정보를 전송한다
  • 자체적인 ACID 기준이 있어 데이터의 변형/손상이 줄어든다
    ( ACID? (원자성, 일관성, 고립성, 지속성) 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질)
  • 에러 처리가 기본적으로 내장되어있다
  • 캐시를 사용하지 못한다
  • REST에 비해 상대적으로 무거우며 속도도 느리다
  • 과거에 많이 사용되었고, 유연성이 떨어진다

2) RPC API

  • 원격 프로시저 호출
    (별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다)
  • 다른 주소공간에서 동작하는 프로세스의 함수를 실행할 수 있다
    (실행 인자와 실행할코드를 명확하게 해야 한다)
    (클라이언트는 일반 메소드를 호출하는 것처럼 원격지의 프로지서를 호출할 수 있고, 서버도 마찬가지로 일반 메소드를 다루는 것처럼 원격 메소드를 다룰 수 있다)
    (클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송한다)
  • 클라이언트 서버간의 제어흐름이 교대로 이루워지지만, 동시실행은 하지 않는다
    (BUT 호출 실행과 반환 시간이 보장되지 않는다)
    (실행 스레드가 호출자로부터 수신자에게 점프했다가 다시 돌아온다)
  • 분산 컴퓨팅 환경에서 프로세스 간 상호 통신 및 컴퓨팅 자원의 효율적인 사용 가능
    (MSA(Micro Service Architecture) 구조로 서비스 다양한 언어와 프레임워크로 개발되는 경우가 많다. 이러한 구조Polyglot에서 각각의 프로토콜에 맞춰서 통신해야할경우 비용이 발생하게 되는데, RPC를 이용하면 언어에 구애받지 않고, 원격에 있는 프로시저를 호출하여 좀 더 비즈니스 로직에 집중 할 수 있음.
    즉, 개발자는 network 통신과 관련된 작업은 신경쓰지 않아도 된다 )

3) Websocket API

  • REST 방식의 한계점에서부터 출발한 방식이다
  • JSON(JavaScript Object Notation)객체를 사용하여 데이터를 전달하는 최신 웹api
  • 클라이언트와 서버간의 양방향 통신을 지원한다
  • 서버가 연결된 클라이언트에서 콜백메세지를 전송할수 있어 REST API보다 효율적이다
  • 채널이 열리기 전에 데이터 요청자는 제공자에게 어떤 정보를 받고 싶은지 요청한다 > 데이터 요청자와 제공자 간에 채널이 열리게 되고 원하는 정보를 제공자에게 알린다(구독).
    그리고 채널이 닫히지 않는 한, 제공자는 계속해서 데이터를 제공한다.
    (한 번 요청하면 그 뒤로 계속해서 알아서 업데이트 해주는 방식이다)
    (채팅, 온라인 게임등 즉각적으로 실시간정보를 주고 받아야하는 경우 쓰임)

4) REST API
가장 많이 사용되고 있는 유연한 API
클라이언트가 서버에 요청을 데이터로 전송함
서버가 클라이언트의 입력을 사용으로 내부함수를 시작하고 출력한 데이터를 클라이언트에 반환함

  • WEB API
    웹 서버 또는 웹 브라우저를 위한 애플리케이션 프로그래밍 인터페이스이다. HTTP 서비스이고 다양한 클라이언트에서 접근이 가능하도록 설계되어있다. Web 환경을 통해 제공되는 데이터 CRUD인터페이스를 제공한다.
    HTTP 표준 접근 방식을 이용하며 플랫폼 환경, 클라이언트 환경의 제한이 없는 서비스 구현이 가능하다.

REST란 (Representational State Transfer)?

API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처로 자원(리소스)을 URI로 표시하고 해당 자원의 상태를 주고 받는다.

REST의 구성요소

  • 자원(Resource): URI
  • 행위(Verb): HTTP METHOD
  • 표현(Representations)

[URL]

  • 프로토콜: http, https, ftp 등
  • 호스트네임: 도메인 or IP (서버컴퓨터의 이름 - 위치)
  • URL path: 서버컴퓨터(host)에서 클라이언트가 요청한 파일 디렉토리
  • 쿼리: 추가적 질문사항

[URI]

  • Identifier: 식별자, 자원 식별자, id값(index)
  • URI가 URL을 포함
  • 예시: http://localhost/article/7 -> article(예를 들어 db 테이블 이름)이라는 db에 저장된 데이터 7번째 것을 나타냄

즉, URL은 서버컴퓨터에서 클라이언트가 요청한 파일의 디렉토리를 나타내지만 URI는 자원의 고유 식별자(id값)이다.

Restful API

두 컴퓨터시스템이 인터넷을 통해 정보를 안전하게 교환하기위해 사용되는 인터페이스이다.
(REST 아키텍처 스타일을 따르는 API를 REST API라고 함)

  • REST는 URI를 통해 자원을 표시한다. 이는 고유해야한다.
    (URI에 자원과 id외 정보만 들어가야한다)
  • HTTP METHOD를 이용하여 해당 자원의 행위를 정해주며 그 결과를 받는다. (리소스 상태 구분)
    (처리 결과를 status code로 사용한다)
  • CRUD의 기능을 전부 활용해야한다.
    (예. POST로만 모든 것을 처리하면 RESTFUL이 아니다.)
  • xml 또는 json을 활용해서 데이터를 전송한다.
  • 캐쉬 가능(cacheable)

HTTP METHOD (CRUD Operation)

POST: Create(추가/생성)
GET: Read(조회)
PUT: Update(수정)
DELETE: Delete(삭제)

용어 정리

*인터페이스: 어떤 기계의 장치끼리 정보를 교환하기 위한 수단, 방법
*게이터웨이: 한 네트워크에서 다른 네트워크로 이동하기 위하여 거쳐야 하는 지점 (서로 다른 네트워크 연결)
*프로토콜: 컴퓨터 내부 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계. 즉 통신 규약 및 약속
*프로시저: 함수가 인풋에 대비한 아웃풋의 발생을 목적으로 한다면,
프로시저는 결과 값에 집중하기 보단 '명령 단위가 수행하는 절차'를 목적으로 한다.
*Polyglot: 여러 언어를 구사하는 것 
폴리글랏 프로그래밍은 '패러다임을 달리 하는 여러 개발 언어를 자유롭게 구사하는 것'
*HTTP (HyperText Transfer Protocol): 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다.
이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다

SOAP/REST API
SOAP API
RPC API
프로토콜
WEB API
HTTP

0개의 댓글