API란?
- 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘.
- API. Application Programming Interface.
API 맥락에서 애플리케이션이라는 단어는 고유한 기능을 갖은 모든 소프트웨어를 나타내며, 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다.
이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한다.
- API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어있다.
API의 작동
- API 아키텍처는 일반적으로 클라이언트-서버 측면에서 설명됨.
요청을 보내는 애플리케이션 : 클라이언트
요청에 대한 응답을 보내는 애플리케이션 : 서버
SOAP API
- 단순 객체 접근 프로토콜을 사용.
클라이언트와 서버는 XML을 사용하여 메시지를 교환하며, 유연성이 떨어진다.
과거에 많이 사용됐음.
RPC API
- 원격 프로시저 호출.
클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송.
Websocket API
- JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발 기술.
클라이언트 앱과 서버 간의 양방향 통신을 지원하며, 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적이다.
REST API
- 오늘날 웹에서 가장 사용되고 있는 유연한 API.
클라이언트가 서버에 요청을 데이터로 전송하고, 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작, 출력데이터를 다시 클라이언트에 반환한다.
웹 API란?
- 웹 API 또는 웹 서비스 API는 웹 서버-브라우저 간의 애플리케이션 처리 인터페이스.
모든 웹 서비스는 API이지만, 모든 API가 웹 서비스는 아니다.
REST API는 위 설명처럼 표준 아키텍쳐 스타일을 사용하는 특수한 유형의 웹 API.
- API는 월드 와이드 웹 전에 만들어졌기 때문에 Java API, 서비스 API 등 API에 대한 다양한 용어가 존재하며, 최신 웹 API는 REST API. 용어는 서로 바꿔 사용할 수 있다.
API 통합?
- API 통합은 클라이언트-서버 간의 데이터를 자동으로 업데이트하는 소프트웨어 구성 요소.
예시) 휴대폰 이미지 갤러리에서 클라우드로 데이터 자동 동기화 또는 다른 시간대 여행 시 노트북의 시간 및 날짜 자동 동기화 등..
API의 다른 유형?
프라이빗 API
- 프라이빗 API는 기업 내부에 있으며 비즈니스 내에 시스템과 데이터를 연결하는 데만 사용됨.
퍼블릭 API
파트너 API
- B2B 파트너십을 지원하기 위해 권한이 부여된 외부 개발자만 액세스할 수 있다.
복합 API
- 두개 이상의 서로 다른 API를 결합, 복잡한 시스템 요구 사항이나 동작으 처리한다.
API 엔드포인트는 무엇일까?
- API 엔드포인트는 API 통신 시스템의 최종 접점. 여기에서 서버 URL, 서비스 및 시스템 간에 정보가 송수신되는 기타 특정 디지털 위치가 포함.
1. 보안
- API 엔드포인트는 시스템을 공격에 취약하게 만듦. API 모니터링은 오용을 방지하는데 중요.
2. 성능
- API 엔드포인트, 특히 트래픽이 많은 엔드포인트는 병목 현상을 일으키고 시스템 성능에 영향을 줄 수 있음.
API의 생성
1. API 계획
- OpenAPI와 같은 API 사양은 API 설계를 위한 블루프린트를 제공. 다양한 사용 사례를 미리 생각하고 API가 현재 API 개발 표준을 준수하는지 확인하는 것이 좋다.
2. API 빌드
- API 디자이너는 상용 코드를 사용하여 API 프로토타입을 생성합니다. 프로토타입이 테스트되면 개발자는 내부 사양에 맞게 이를 사용자 지정할 수 있다.
3. API 테스트
- API 테스트는 소프트웨어 테스트와 동일하며 버그 및 결함을 방지하기 위해 수행되어야 함. API 테스트 도구로 공격에 대비해 API를 강화할 수 있다.
4. API 문서화
- API는 그 자체로 설명이 필요 없지만, API 문서는 사용 편의성을 높이는 가이드 역할을 함. 다양한 기능과 사용 사례를 제공하는 잘 문서화된 API는 서비스 지향 아키텍처에서 더 많이 사용되는 경향이 있음.
5. API 마케팅
API 테스트
다른 소프트웨어 방법론과 유사. 서버 응답 검증에 주로 초점을 두며 API 테스트에는 다음이 포함됨.
- 성능 테스트를 위해 API 엔드포인트에 요청을 여러번 함.
- 비즈니스 로직 및 기능적 정확성 확인을 위한 단위 테스트 작성.
- 시스템 공격을 시뮬레이션 하여 보안 테스트.
API 문서 작성법
포괄적인 API 문서 작성은 API 관리 프로세스의 일부.
- 간단하고 읽기 쉬운 영어로 설명 작성. 도구로 생성된 문서는 장황하며 편집이 필요할 수 있다.
- 코드 샘플을 사용해 기능 설명.
- 문서를 정확하고 최신 상태로 유지하기.
- 초심자를 위한, 쉬운 작문 스타일을 목표로 하기.
- API가 사용자를 위해 해결할 수 있는 모든 문제를 다룬다.
API 사용하기
- API 키를 받는다. API 공급 업체의 확인을 받은 계정을 생성하면 됨.
- HTTP API 클라이언트를 설정하기. 이 도구를 사용하면 수신된 API 키를 사용하여 API 요청을 쉽게 구성할 수 있음.
- API 클라이언트가 없는 경우 설명서를 참조하여 브라우저에서 직접 구성할 수 있음.
- 새 API 구문에 익숙해지면 코드에서 사용 가능.
- REST. Representational State Transfer.
클라이언트가 서버 데이터에 엑세스하는데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의함. 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환.
- 주된 특징은 무상태.
무상태 : 서버가 요청 간에 클라이언트 데이터를 저장하지 않음. 서버에 대한 클라이언트 요청은 웹 사이트를 방문하기 위해 브라우저에 입력하는 URL과 유사하다. 서버의 응답은 웹 페이지의 일반적인 그래픽 랜더링이 없는 일반 데이터이다.
REST API의 장점
1. 통합
- API는 새로운 애플리케이션을 기존 소프트웨어 시스템과 통합하는데 사용되며, 그러면 각 기능을 처음부터 작성할 필요가 없기 때문에 개발 속도가 빨라진다.
API를 사용해 기존 코드를 활용할 수 있다.
2. 혁신
- 새로운 앱의 등장으로 전체 산업이 바뀔수도 있다. 기업은 신속하게 대응하고 혁신적인 서비스의 신속한 배포를 지원해야한다.
전체 코드를 다시 작성할 필요 없이 API 수준에서 변경하여 이를 수행할 수 있다.
3. 확장
- API는 기업이 다양한 플랫폼에서 고객의 요구 사항을 충족할 수 있는 고유한 기회 제공. 예로 지도 API를 사용하면 웹사이트, 안드로이드, iOS 등을 통해 지도 정보를 통합할 수 있다.
어느 기업이나 API를 사용하여 내부 데이터베이스에 유사한 액세스 권한을 부여할 수 있다.
4. 유지 관리의 용이성
- API는 두 시스템 간 게이트웨이 역할을 한다. API가 영향을 받지 않도록 각 시스템은 내부적으로 변경해야한다.
이렇게하면 한 시스템의 향후 코드 변경이 다른 시스템에 영향을 미치지 않음.
REST API를 보호하기
- 모든 API는 적절한 인증 및 모니터링을 통해 보호되어야 함.
1. 인증 토큰
- 사용자에게 API 호출을 수행할 수 있는 권한을 부여하는데 사용. 인증 토큰은 사용자가 자신이 누구인지 확인하고 해당 특정 API 호출에 대한 액세스 권한이 있는지 확인함.
2. API 키
- API를 호출하는 프로그램 또는 애플리케이션을 확인. 즉, 애플리케이션을 식별하고 애플리케이션에 특정 API 호출을 수행하는데 필요한 엑세스 권한이 있는지 확인함.
- 토큰만큼 안전하지는 않지만, 사용햘에 대한 데이터를 수집하기 위해 API 모니터링을 허용함. 다른 웹 사이트를 방문할 때 브라우저 URL에서 긴 문자열과 숫자를 본 적이 있다면, 그것이 웹 사이트가 내부 API 호출을 수행하는데 사용하는 API키.