API 개념
API란 정의나 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.
API(Application Programming Interface)에서 애플리케이션은 고유한 기능 모든 소프트웨어를 나타냅니다. 인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다. 요청과 응답을 사용하여 서로 통신하는 방법을 정의합니다.
API 아키텍처는 일반적으로 클라이언트와 서버 측면에서 볼 수 있습니다.
요청을 보내는 애플리케이션을 클라이언트라고 하고, 응답을 보내는 애플리케이션을 서버라고 합니다.
1. SOAP API : 단순 객체 접근 프로토콜을 사용합니다. 클라이언트와 서버는 XML을 사용하여 메시지를 교환합니다. 과거에 많이 사용되었던 API입니다.
2. RPC API : 원격 프로시저 호출 API입니다. 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버 출력을 클라이언트로 전송합니다.
3. Websocket API : JSON 객체를 사용하여 데이터 전달하는 웹 API 개발입니다. 클라이언트 앱과 서버간의 양방향 통신을 지원합니다. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있는 점이 특징입니다.
4. REST API : Representational State Transfer의 줄임말로 가장 많이 사용되고 있는 API입니다. 클라이언트가 서버에 요청을 데이터로 전송합니다. 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환합니다. REST는 클라이언트가 서버 데이터에 접근하는 데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의합니다. 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환합니다. 주된 특징으로 서버가 요청 간에 클라이언트 데이터를 저장하지 않은 상태를 가지고 있지 않다는 점입니다.
API 테스트란
서버 응답 검증에 주로 초점을 두는 것으로, 성능 테스트를 위해 API 엔드포인트에 요청을 여러번 하거나 단위 테스트, 시스템 공격을 시뮬레이션하여 보안 테스트를 진행할 수 있습니다.
GraphQL이란
API용으로 특별히 개발된 쿼리 언어로서, 클라이언트에게 요청한 데이터만 제공하는것을 우선으로 합니다.
즉, api를 만들때 사용할 수 있는 쿼리 언어로 쿼리에 대한 데이터를 받을 수 있는 런타임이기도 합니다. GraphQL은 선연형 데이터 페칭 언어라고 흔히 말합니다. 그러므로 개발자가 무슨 데이터가 필요한지에만 신경 쓰고 어떻게 가져올지는 신경 쓰지 않습니다.
페이스북 내부에서 자사의 네이티브 앱을 다시 만들기 위해 엔지니어들이 데이터를 클라이언트 애플리케이션으로 전송하는 방식을 개선하기 위해 만들어졌습니다.
GraphQL은 명세로 개발환경에 독립적이지만 GraphQL 클라이언트로 인해 강제적 선택이 필요한 경우가 있습니다.
GraphQL 클라이언트 목적은 애플리케이션 성능과 효율성을 끌어올리고 네트워크 요청, 데이터 캐싱, 사용자 화면에 데이터 주입 등의 일을 담당합니다. Relay와 아폴로가 있습니다.
댓글