항해99 17일차 개발일지

홍당무·2022년 11월 30일
0

API - 2부

API의 다른 유형

API는 아키텍처와 사용 범위에 따라 분류된다. API 아키텍처의 사용 범위는 이러하다.

프라이빗 API

기업 내부에 있으며 비즈니스 내에서 시스템과 데이터를 연결하는 데만 사용된다.

퍼블릭 API

일반에 공개되며 누구나 사용할 수 있다. 이런 유형의 API와 관련된 권한 부여와 비용이 있을 수도 있다.

파트너 API

B2B 파트너십을 지원하기 위해 권한이 부여된 외부 개발자만 액세스 할 수 있다.

복합 API

두 개 이상의 서로 다른 API를 결합하여 복잡한 시스템 요구 사항이나 동작을 처리한다.

API의 엔드포인트와 중요성

모든 API는 적절한 인증 및 모니터링을 통해 보호되어야 한다. REST API를 보호하기 위한 두 가지 주요 방법은 다음과 같다.

인증 토큰

사용자에게 API 호출을 수행할 수 있는 권한을 부여하는 데 사용된다. 인증 토큰은 사용자가 자신이 누구인지 확인하고 해당 특정 API 호출에 대한 액세스 권한이 있는지 확인한다. 예를 들어, 이메일 서버에 로그인하면 이메일 클라이언트는 보안 액세스를 위해 인증 토큰을 사용한다.

API 키

API를 호출하는 프로그램 또는 애플리케이션을 확인한다. 즉, 애플리케이션을 식별하고 애플리케이션에 특정 API 호출을 수행하는 데 필요한 액세스 권한이 있는지 확인한다. API 키는 토큰만큼 안전하지는 않지만 사용량에 대한 데이터를 수집하기 위해 API 모니터링을 허용한다. 다른 웹 사이트를 방문할 때 브라우저 URL에서 긴 문자열과 숫자를 본다면, 이 문자열은 웹 사이트가 내부 API 호출을 수행하는 데 사용하는 API인 것이다.

API 생성 방법

API 계획

OpenAPI와 같은 API 사양은 API 설계를 위한 블루프린트를 제공한다. 다양한 사용 사례를 미리 생각하고 API가 현재 API 개발 표준을 준수하는지 확인하는 것이 좋다.

API 빌드

API 디자이너는 상용 코드를 사용하여 API 프로토타입을 생성한다. 프로토타입이 테스트되면 개발자는 내부 사양에 맞게 이를 사용자 지정할 수 있다.

API 테스트

소프트웨어 테스트와 동일하며 버그 및 결함을 방지하기 위해 수행되어야 한다. API 테스트 도구로 사이버 공격에 대비하여 API를 강화할 수 있다.

API 문서화

API는 그 자체로 설명이 필요 없지만, API 문서는 사용 편의성을 높이는 가이드 역할을 한다. 다양한 기능과 사용 사례를 제공하는 문서화된 API는 서비스 지향 아키텍처에서 더 많이 사용된다.

API 마케팅

Amazon이 소매용 온라인 마켓플레이스인 것처럼 API 마켓플레이스는 개발자가 다른 API를 사고 팔기 위해 존재한다. API를 나열해서 수익을 창출할 수 있다.

API 테스트

API 테스트 전략은 다른 소프트웨어 테스트 방법론과 유사하다. 서버 응답 검증에 주로 초점을 둔다.

- 성능 테스트를 위해 API 엔드포인트에 요청을 여러 번 한다.

- 비즈니스 로직 및 기능적 정확성을 확인하기 위한 단위 테스트를 작성한다.

- 시스템 공격을 시뮬레이션하여 보안 테스트를 한다.

API 문서 작성 요령

포괄적인 API 문서 작성은 API 관리 프로세스의 일부이며, API 문서는 도구를 사용하여 자동 생성하거나 수동으로 작성할 수 있다.

- 간단하고 읽기 쉬운 영어로 작성한다.

- 코드 샘플을 사용하여 기능을 설명한다.

- 문서를 정확하고 최신 상태로 유지한다.

- 초심자를 위한 작문 스타일을 목표로 한다.

- API가 사용자를 위해 해결할 수 있는 모든 문제를 다룬다.

API 사용 방법

- API 키를 받는다. (공급 업체의 확인을 받은 계정 생성)

- HTTP API 클라이언트를 설정한다.

- API 클라이언트가 없는 경우 API 설명서를 참조해 브라우저에서 요청을 직접 할 수 있다.

- 새 API 구문에 익숙해지면 코드에서 이를 사용할 수 있다.

GraphQL

API용으로 특별히 개발된 쿼리 언어로서, 클라이언트에게 요청한 데이터만 제공하는 것을 우선으로 한다. 또한, API를 빠르고 유연하며 개발자 친화적으로 만들도록 설계됐다. REST의 대안으로서 GraphQL은 프론트엔드 개발자에게 단일 GraphQL 엔드포인트로 여러 DB, 마이크로서비스 및 API를 쿼리할 수 있는 기능을 제공한다.

profile
공부하는 백엔드 개발자

0개의 댓글