REST-API vs GraphQL-API

임성준·2022년 5월 10일
0
post-thumbnail

1. API (Application Programming Interface)

두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘

개인정리 : 터널 집합

API 아키텍처는 일반적으로 클라이언트와 서버 측면에서 설명됩니다. 요청을 보내는 애플리케이션을 클라이언트라고 하고 응답을 보내는 애플리케이션을 서버라고 합니다.

1-1. 생성된 시기와 이유에 따른 API 종류

  • SOAP API
    이 API는 단순 객체 접근 프로토콜을 사용하며, 클라이언트와 서버는 XML을 사용하여 메시지를 교환한다. 과거에 더 많이 사용되었으며 유연성이 떨어지는 API이다.

  • RPC API
    이 API를 원격 프로시저 호출이라고 하며, 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송한다.

  • Websocket API
    Websocket API는 JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발이다. WebSocket API는 클라이언트 앱과 서버 간의 양방향 통신을 지원하며, 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적이다.

  • REST API
    오늘날 웹에서 가장 많이 볼 수 있는 유연한 API이다. 클라이언트가 서버에 요청을 데이터로 전송하며, 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환한다.

2. REST API

REST는 Representational State Transfer의 줄임말이다. REST는 클라이언트가 서버 데이터에 액세스하는 데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의하며, 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환한다.

특징

  • 1. 통합
    API는 새로운 애플리케이션을 기존 소프트웨어 시스템과 통합하는 데 사용된다. 그러면 각 기능을 처음부터 작성할 필요가 없기 때문에 개발 속도가 빨라지며, API를 사용하여 기존 코드를 활용할 수 있다.

  • 2. 혁신
    새로운 앱의 등장으로 전체 산업이 바뀔 수 있다. 기업은 신속하게 대응하고 혁신적인 서비스의 신속한 배포를 지원해야 합니다. 전체 코드를 다시 작성할 필요 없이 API 수준에서 변경하여 이를 수행할 수 있습니다.

  • 3. 확장
    API는 기업이 다양한 플랫폼에서 고객의 요구 사항을 충족할 수 있는 고유한 기회를 제공한다. 예를 들어 지도 API를 사용하면 웹 사이트, Android, iOS 등을 통해 지도 정보를 통합할 수 있고 어느 기업이나 무료 또는 유료 API를 사용하여 내부 데이터베이스에 유사한 액세스 권한을 부여할 수 있다.

  • 4. 유지 관리의 용이성
    API는 두 시스템 간의 게이트웨이 역할을 한다. 따라서 API가 영향을 받지 않도록 각 시스템은 내부적으로 변경해야 하며, 이렇게 하면 한 시스템의 향후 코드 변경이 다른 시스템에 영향을 미치지 않는다.

3. GraphQL API

GraphQL 은 API를 위한 쿼리 언어이며 타입 시스템을 사용하여 쿼리를 실행하는 서버사이드 런타임이다. GraphQL은 특정한 데이터베이스나 특정한 스토리지 엔진과 관계되어 있지 않으며 기존 코드와 데이터에 의해 대체된다.

💎   런타임(runtime) : 컴퓨터 과학에서 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말한다.

GraphQL 서비스는 타입과 필드를 정의하고, 각 타입의 필드에 대한 함수로 구현된다. 예를 들어, 로그인한 사용자가 누구인지(me)와 해당 사용자의 이름(name)을 가져오는 GraphQL 서비스는 다음과 같다.

GraphQL

type Query {
  me: User
}

type User {
  id: ID
  name: String
}

각 타입의 필드에 대한 함수를 작성하면 다음과 같이 작성할 수 있다.

Javascript

function Query_me(request) {
  return request.auth.user;
}

function User_name(user) {
  return user.getName();
}

GraphQL 서비스가 실행되면 (일반적으로는 웹 서비스의 URL) GraphQL 쿼리를 전송하여 유효성을 검사하고 실행할 수 있으며, 수신된 쿼리는 먼저 정의된 타입과 필드만 참조하도록 검사한 다음, 함수를 실행하여 결과를 생성한다.

예제)

GraphQL

{
  me {
    name
  }
}

json

{
  "me": {
    "name": "Luke Skywalker"
  }
}

참조

profile
오늘도 공부 📖🌙

0개의 댓글