WordPress용 API

Gato GraphQL vs WP REST API

Gato GraphQL과 WP REST API 비교

Gato GraphQL vs WP REST API
plus image
Gato GraphQL vs WP REST API

REST API와 GraphQL API의 차이점은 WP REST APIGato GraphQL을 비교할 때도 일반적으로 적용됩니다.

GraphQL을 사용하면 엔드포인트에 대해 맞춤형 GraphQL 쿼리를 실행하여, 필요한 특정 데이터를 지정하고 단일 요청으로 해당 데이터만 가져올 수 있습니다.

예를 들어, 아래 GraphQL 쿼리는 특정 게시물에 필요한 데이터를 관계 데이터(작성자, 카테고리, 태그)를 포함하여 단일 요청으로 가져옵니다.

query {
  post(by: { id: 1 }) {
    title
    content
    url
    date
    author {
      id
      name
    }
    categories {
      id
      name
    }
    tags {
      id
      name
    }
  }
}

REST로 동일한 데이터를 가져오려면 먼저 게시물 데이터를 가져오는 요청을 실행하고, 이후 각 관계(작성자, 카테고리, 태그)의 데이터를 가져오기 위한 추가 요청이 필요할 수 있습니다.

REST와 GraphQL 간의 이러한 아키텍처적 차이점은 다른 곳에서 광범위하게 다루어졌으므로, 여기서는 반복하지 않겠습니다.

아래에서는 Gato GraphQL(모든 확장 기능 포함)과 WP REST API를 더 구체적으로 비교해 보겠습니다.

요약 표

기능Gato GraphQLWP REST API
데이터 가져오기엔드포인트에 대해 맞춤형 GraphQL 쿼리를 실행하여 단일 요청으로 특정 데이터를 가져옵니다.관련 데이터를 가져오기 위해 다양한 엔드포인트에 여러 요청이 필요합니다(예: 게시물 데이터, 작성자 데이터, 카테고리, 태그).
엔드포인트Persisted Queries를 지원하며, GraphQL 언어를 사용하여 wp-admin 내 사용자 인터페이스를 통해 생성된 사전 정의 데이터를 가진 엔드포인트입니다. 코드 배포가 불필요합니다.PHP 코드로 생성되어 테마 또는 플러그인 내에 배포되는, 각각의 URL과 사전 정의 데이터를 가진 REST 엔드포인트를 통해 데이터를 공개합니다.
접근 제어규칙(예: 사용자 역할, 권한, IP 범위)에 기반한 필드 수준 접근 제어로 유연성을 제공합니다.context 파라미터에 따라 데이터를 제한합니다(예: 비인증 사용자를 위한 view, 권한 있는 인증 사용자를 위한 edit).
일괄 작업Multiple Query Execution을 지원하며, 단일 GraphQL 문서에서 여러 작업을 실행할 수 있고 @export 디렉티브를 통해 작업 간 상태를 공유할 수 있습니다. 배치 요청을 개선한 것입니다.단일 HTTP 요청 내에서 여러 요청을 내부적으로 처리하는 배치 요청이 가능합니다.
사이트 관리단일 GraphQL 문서 내에서 데이터를 가져오고, 수정하고, 다시 저장할 수 있으며, 사용자 인터페이스를 통해 WordPress 사이트의 자동화와 관리를 실현합니다. 복제, 자동화, 백업, 검색/치환, 웹훅, 번역 등 여러 플러그인의 작업을 수행할 수 있습니다. API이자 그 이상의 존재입니다.주로 WordPress 데이터에 접근하고 조작하기 위한 API입니다.
범용성GraphQL 쿼리를 통한 데이터 뮤테이션과 서드파티 서비스와의 통합이 가능한 WordPress 사이트 관리용 범용 도구입니다.API 제공에 특화되어 있으며, 유사한 기능을 구현하려면 추가 플러그인이나 커스텀 코드가 필요합니다.

주요 포인트 요약:

  • 데이터 가져오기: Gato GraphQL은 맞춤형 쿼리를 사용하고, WP REST API는 여러 엔드포인트 요청을 사용합니다.
  • 엔드포인트: Gato GraphQL은 UI로 생성된 Persisted Queries를 사용하고, WP REST API는 PHP로 작성된 REST 엔드포인트를 사용합니다.
  • 접근 제어: Gato GraphQL은 필드 수준의 제어를 제공하고, WP REST API는 context 파라미터를 사용합니다.
  • 일괄 작업: Gato GraphQL은 Multiple Query Execution을 사용하고, WP REST API는 배치 요청을 사용합니다.
  • 사이트 관리: Gato GraphQL은 종합적인 도구이고, WP REST API는 주로 API입니다.

사전 정의 데이터 접근

WP REST API에서는 REST 엔드포인트를 통해 데이터를 공개합니다. 각 엔드포인트는 고유한 URL을 가지며, 해당 데이터는 (게시물이나 사용자 등 대응하는 리소스에 대해) 사전에 정의되어 있습니다.

REST 엔드포인트와 유사하게, Gato GraphQL은 Persisted Queries를 지원하며, 이것도 사전 정의 데이터를 가진 엔드포인트입니다. GET으로 Persisted Query를 요청하면 저장된 GraphQL 쿼리가 실행되어 예상되는 JSON 응답이 생성됩니다.

브라우저에서 Persisted Query 실행하기
브라우저에서 Persisted Query 실행하기

양자의 차이점은, REST API 엔드포인트는 PHP 코드로 생성되어 테마나 플러그인 내에 배포되어야 하는 반면, Gato GraphQL의 Persisted Queries는 GraphQL 언어를 사용하여 작성되고 코드 배포 없이 wp-admin 내 사용자 인터페이스(WordPress 편집기 기반)를 통해 게시된다는 점입니다.

Persisted Query 편집기
Persisted Query 편집기

REST 엔드포인트와 GraphQL Persisted Queries 모두에 동일한 캐싱 메커니즘을 적용할 수 있습니다. Persisted Query는 자체 엔드포인트를 통해 접근되므로, 그 응답은 표준 HTTP 캐싱으로 캐시될 수 있습니다(PRO).

접근 제어

WP REST API에서 데이터 제한은 context 파라미터에 의존합니다. ?context=view를 전달하면 비인증 사용자를 위한 데이터가 반환되고, ?context=edit는 (적절한 권한을 가진) 인증된 사용자에게 게시물의 content.raw 필드 등의 추가 데이터를 포함합니다.

Gato GraphQL은 훨씬 높은 유연성을 제공하며, 접근 제어 규칙에 따라 모든 단일 필드에 대해 접근 가능 여부를 설정할 수 있습니다. 로그인한 사용자만, 특정 역할이나 권한을 가진 사용자만, 또는 특정 IP 범위의 방문자만 특정 필드에 접근할 수 있도록 검증할 수 있습니다(PRO).

접근 제어 목록 편집기
접근 제어 목록 편집기

일괄 작업

WP REST API는 배치 요청을 실행할 수 있으며, 여러 요청이 단일 HTTP 요청 내에서 내부적으로 처리됩니다.

Gato GraphQL은 Multiple Query Execution을 제공하며, 단일 GraphQL 문서에서 여러 작업을 실행할 수 있습니다.

Multiple Query Execution배치 요청의 개선판으로, @export 디렉티브를 통해 작업 간에 상태를 공유할 수 있습니다.

예를 들어, 게시물을 복제하려면 query 작업으로 게시물 데이터를 가져오고, 해당 데이터를 mutation 작업에 전달하여 새 게시물을 생성합니다.

query GetPostAndExportData($postId: ID!)
{
  post(by: { id: $postId }, status: any) {
    author {
      id @export(as: "authorID")
    }
    categories {
      id @export(as: "categoryIDs", type: LIST)
    }
    rawContent @export(as: "rawContent")
    rawExcerpt @export(as: "excerpt")
    featuredImage {
      id @export(as: "featuredImageID")
    }
    tags {
      id @export(as: "tagIDs", type: LIST)
    }
    rawTitle @export(as: "title")
  }
}
 
mutation DuplicatePost
  @depends(on: "GetPostAndExportData")
{
  createPost(input: {
    status: draft,
    authorBy: {
      id: $authorID
    },
    categoriesBy: {
      ids: $categoryIDs
    },
    contentAs: {
      html: $rawContent
    },
    excerpt: $excerpt
    featuredImageBy: {
      id: $featuredImageID
    },
    tagsBy: {
      ids: $tagIDs
    },
    title: $title
  }) {
    postID
  }
}

WordPress 사이트 관리

Gato GraphQL을 사용하면 데이터베이스에서 데이터를 가져오고, 필요에 따라 수정하고, 모두 단일 GraphQL 문서 내에서 다시 저장할 수 있습니다.

이는 사용자 인터페이스를 통해 실현되며, GraphQL 쿼리를 작성하고 게시하고, 필요에 따라 엔드포인트를 설정하고, 어떤 이벤트가 발생했을 때 쿼리 실행을 자동화할 수 있습니다.

이 모든 것이 의미하는 바는, Gato GraphQL이 WordPress 사이트를 관리하기 위한 범용 도구로서, 데이터(WordPress 사이트의 것이든 서드파티 서비스에서 제공되는 것이든)를 뮤테이션해야 하는 사용 사례를 GraphQL 쿼리 실행을 통해 처리할 수 있다는 것입니다.

Gato GraphQL이 얼마나 많은 플러그인의 기능을 제공할 수 있는지 살펴보세요.

WP REST API는 말 그대로 API입니다.

Gato GraphQL도 API이지만, 그 이상의 존재입니다.

뉴스레터 구독하기

Gato GraphQL의 모든 업데이트를 놓치지 마세요.