티스토리 뷰

'https://www.flaticon.com/kr/free-icon/api_103093'. '이미지: flaticon.com'. 이 커버는 Flaticon.com의 자료를 사용해 디자인되었습니다

 

API(Application Programming Interface, 응용 프로그래밍 인터페이스)

  • 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
  • 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공
    • 애플리케이션이 쉽고 안전하게 데이터와 기능을 교환할 수 있어 소프트웨어 개발 단순화
    • 외부 타사 개발자, 비즈니스 파트너, 사내 부서에 애플리케이션의 데이터와 기능 개발 가능
    • ⇒ 리소스에 대한 액세스 권한을 제공하고 보안과 제어를 유지할 수 있게 해 주며 액세스 권한을 어떻게, 누구에게 제공할지 여부만 결정하면 됨
  • 컴퓨터나 컴퓨터 프로그램(소프트웨어) 사이의 연결, 컴퓨터 프로그래머가 사용하도록 고안
    • cf) 사용자 인터페이스
      • 컴퓨터와 인간을 연결
      • 사람(최종 사용자)에 의해 사용되도록 고안
  • 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공함
  • 안녕사양이나 구현체를 의미할 수도 있음

 


리소스(Resource)?

  • Rest API의 주요한 정보
  • 교환하는 모든 정보
    • 문서, 이미지, 일반적인 서비스, 리소스들의 집합, 객체
  • 리소스 표현(Resource Representation)
    • 특정 시점의 리소스 상태
      • 예시 : 호출
    • 데이터, 메타데이터,상태 변경 가능한 하이퍼링크
      • get /devices http 1.1
        ContentType: application/json // 메타데이터, 데이터 타입
        Link: https://bad.example; rel="preload" // 하이퍼링크
        {
            "data" :{ // 데이터
                ...
            }
        }
    • 하이퍼텍스트(HATEOS)
      • 유저가 선택적으로 정보의 표현과 제어를 동시에 할 수 있는 방법
      • HTML, XML, JSON을 이용한 방법으로 제한하는 것이 아닌 각 시스템에서 이해 할 수 있는 형식, 관계 타입을 갖추어 hypertext를 통한 link로 사용한다 → REST하다

 

 


사용 목적

  • 시스템이 동작하는 방식에 관한 내부의 세세한 부분을 숨김
    • 개발자는 인터페이스를 통해 다른 제품 및 서비스와 통신하면 됨
  • 내부 구현이 변경되더라도 프로그래머가 유용하게 사용할 수 있고 일정하게 관리할 수 있는 부분만 노출
  • 특정 시스템용으로 커스텀하게 빌드될 수 도 있고, 수많은 시스템 간 상호운용성을 허용하는 공유가 되는 표준일 수 있음
  • 두 시스템 사이의 기능의 추상화를 용이하게 해 설계상의 보안을 제공
  • API 앤드포인트는 소비하는 애플리케이션을 서비스를 제공하는 인프라로부터 분리
  • API 호출은 일반적으로 서버에 대한 공격 위험을 줄이기 위한 인증 자격 증명이 포함되며 API 게이트웨이는 보안 위협을 최소화하기 위해 엑세스를 제한
  • 교환 중에 HTTP 헤더, 쿠키, 쿼리 문자열 변수는 데이터에 추가 보안 계층을 제공
  • 예시
    • 카드 결제 시 전자상거래 스토어 애플리케이션 프런트엔드에 카드 정보 입력
    • 지불 프로세서는 사용자의 은행 계정에 엑세스 하지 않고 API가 이 거래를 위한 고유한 토큰을 만들어 서버에 대한 API 호출
    • 해킹 위협에 대한 높은 보안 보장 및 결제 시스템 알지 못하고 직접 구현하지 않아도 쓸 수 있음

 


API 작동 방식

  1. 클라이언트 애플리케이션은 API 호출을 시작하여 정보를 검색(== request)
  2. 이 요청은 API URI(Uniform Resource Identifier)를 통해 응용 프로그램에서 웹 서버로 처리되며 요청 동사, 헤더 및 요청 본문을 포함함
  3. 유효한 요청을 받은 API는 외부 프로그램이나 웹 서버를 호출
  4. 서버는 요청한 정보와 함께 API에 응답을 보냄
  5. API는 데이터를 초기 요청 애플리케이션으로 전송함
    1. 데이터 전송은 사용 중인 웹 서비스에 따라 다르며, 요청 응답 프로세스는 모두 API를 통해 수행

 


API 사양

  • 이러한 연결이나 인터페이스를 빌드하거나 사용하는 방법을 기술하는 문서나 표준
  • API 호출들을 정의하며, 이들을 어떻게 사용하거나 구현하는지 설명

 


API 호출(call)

  • 구성 요소 : 서브루틴, 메서드(method), 요청, 통신 엔드포인트
    • 서브루틴 : 루틴과 서브 루틴은 어떤 프로그램이 실행될 때 불려지거나 반복해서 사용되도록 만들어진 일련의 코드들을 지칭하는 용어, 고급 프로그래밍 언어에서는 공통 루틴이 미리 함수로 만들어 짐
  • 구성 중 하나를 사용하는 프로그램이나 프로그래머는 API의 해당 부분을 호출한다고 함

 


프로토콜 종류

  • 사용자에게 허용되는 데이터 유형과 명령을 지정하는 일련의 정의된 규칙을 제공하기 위해 개발
  • 표준화된 정보 교환 용이
  • SOAP
    • 독점 XML로 구축된 API 프로토콜
    • SMTP와 HTTP를 통해 데이터를 주고받음
  • XML-RPC
    • 데이터를 전송하기 위해 XML의 특정 형식에 의존
    • 최소 대역폭을 사용해 SOAP보다 간단하고 가벼움
  • JSON-RPC
    • JSON을 사용하는 원격 프로시저 호출
  • REST
    • 프로토콜이 아닌 아키텍처

 


API, 웹 서비스 및 마이크로 서비스

  • 웹 서비스는 웹 주소를 통해 엑세스 할 수 있는 소프트웨어 구성 요소 → 웹 서비스는 네트워크를 필요로 함
  • 웹 서비스는 애플리케이션의 데이터와 기능을 노출하므로 사실상 모든 웹 서비스는 API, 그러나 모든 API가 웹 서비스는 아님

 

출처 :

https://ko.wikipedia.org/wiki/API

https://velog.io/@za1013/API-서버란-무엇일까

http://www.terms.co.kr/routine.htm

https://www.ibm.com/cloud/learn/api

https://dev-dain.tistory.com/50

https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces

https://sabarada.tistory.com/27

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함