티스토리 뷰
API(Application Programming Interface, 응용 프로그래밍 인터페이스)
- 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공
- 애플리케이션이 쉽고 안전하게 데이터와 기능을 교환할 수 있어 소프트웨어 개발 단순화
- 외부 타사 개발자, 비즈니스 파트너, 사내 부서에 애플리케이션의 데이터와 기능 개발 가능
- ⇒ 리소스에 대한 액세스 권한을 제공하고 보안과 제어를 유지할 수 있게 해 주며 액세스 권한을 어떻게, 누구에게 제공할지 여부만 결정하면 됨
- 컴퓨터나 컴퓨터 프로그램(소프트웨어) 사이의 연결, 컴퓨터 프로그래머가 사용하도록 고안
- cf) 사용자 인터페이스
- 컴퓨터와 인간을 연결
- 사람(최종 사용자)에 의해 사용되도록 고안
- 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 작동 방식
- 클라이언트 애플리케이션은 API 호출을 시작하여 정보를 검색(== request)
- 이 요청은 API URI(Uniform Resource Identifier)를 통해 응용 프로그램에서 웹 서버로 처리되며 요청 동사, 헤더 및 요청 본문을 포함함
- 유효한 요청을 받은 API는 외부 프로그램이나 웹 서버를 호출
- 서버는 요청한 정보와 함께 API에 응답을 보냄
- API는 데이터를 초기 요청 애플리케이션으로 전송함
- 데이터 전송은 사용 중인 웹 서비스에 따라 다르며, 요청 응답 프로세스는 모두 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
링크
TAG
- 처리율 제한 알고리즘
- 처리율제한
- 고정 윈도우 카운터 알고리즘
- 카카오프로젝트100
- 누출 버킷 알고리즘
- 회고
- 이동 윈도우 카운터 알고리즘
- 이동 윈도우 로깅 알고리즘
- 글또
- 개발자
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함