블로그

⭐️ Application Passwords 지원, WordPress Multisite 호환성, 페이지 mutations을 포함한 v2.4 릴리스

Leonardo Losoviz
작성자: Leonardo Losoviz ·

Gato GraphQL v2.4가 여러 가지 개선 사항 및 버그 수정과 함께 릴리스되었습니다.

Application Passwords 지원

이제 WordPress Application Passwords를 사용하여 GraphQL 엔드포인트에 인증된 요청을 보낼 수 있습니다.

예를 들어, USERNAMEPASSWORD 값을 대체하여 GraphQL 서버에 curl 명령을 실행할 때 application password를 전달할 수 있습니다.

curl -i \
  --user "USERNAME:PASSWORD" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"query": "{ me { name } }"}' \
  https://mysite.com/graphql

Gato GraphQL PRO를 사용하는 경우, 새로 추가된 _strBase64Encode 필드 덕분에 GraphQL을 사용하여 다른 WordPress 사이트에 인증된 HTTP 요청을 실행할 수 있습니다.

아래 쿼리는 사용자 이름과 application password(및 연결할 엔드포인트)를 받아, 필요한 인증 헤더(「Basic base64encoded(username:password)」 형식)를 생성하고, 실행할 GraphQL 쿼리를 전달하여 GraphQL 서버에 HTTP 요청을 보냅니다.

query GetDataFromExternalWPSite(
  $username: String!
  $appPassword: String!
  $endpoint: URL!
) {
  loginCredentials: _sprintf(
    string: "%s:%s",
    values: [$username, $appPassword]
  )
    @remove
 
  base64EncodedLoginCredentials: _strBase64Encode(
    string: $__loginCredentials
  )
    @remove
 
  loginCredentialsHeaderValue: _sprintf(
    string: "Basic %s",
    values: [$__base64EncodedLoginCredentials]
  )
    @remove
 
  externalHTTPRequestWithUserPassword: _sendGraphQLHTTPRequest(input:{
    endpoint: $endpoint,
    query: """
  
{
  me {
    name
  }
}
 
    """,
    options: {
      headers: [
        {
          name: "Authorization",
          value: $__loginCredentialsHeaderValue
        }
      ]
    }
  })
}

WordPress Multisite와의 호환성

Gato GraphQL을 WordPress Multisite 네트워크와 호환 가능하게 만들기 위해 여러 문제가 수정되었습니다.

이제 Gato GraphQL PRO의 단일 라이선스를 활성화하여 Multisite 전체를 운영할 수 있습니다.

데모 동영상 「WordPress Multisite 기반 Multilingual 사이트에서 페이지 번역하기」를 확인해 보세요. 이 데모에서는 Gato GraphQL이 WordPress Multisite 네트워크 기반의 Multilingual 사이트에 있는 모든 페이지를 번역하는 과정을 보여줍니다.

GraphQL 스키마에 페이지 mutations 추가

다음 mutations이 GraphQL 스키마에 추가되었습니다.

  • Root.createPage
  • Root.updatePage
  • Page.update

예를 들어, 이제 다음 GraphQL 쿼리를 실행하여 페이지를 수정할 수 있습니다.

mutation UpdatePage {
  updatePage(input: {
    id: 2
    title: "Updated title"
    contentAs: { html: "Updated content" },
    status: pending
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    page {
      id
      rawTitle
      rawContent
      status
    }
  }
}

로그인한 사용자의 페이지를 가져오는 필드 추가

v2.4에서는 로그인한 사용자의 페이지를 가져오는 필드도 추가되었습니다.

기존 필드인 Root.page, Root.pages, Root.pageCount는 모든 사용자의 페이지를 가져오지만, 공개 페이지(즉, 상태가 "publish"인 것)만 대상으로 합니다.

이 버전부터는 다음의 새로운 필드를 사용하여 로그인한 사용자의 공개 또는 비공개 페이지(상태가 "publish", "pending", "draft" 또는 "trash"인 것)를 가져올 수 있습니다.

  • Root.myPage
  • Root.myPages
  • Root.myPageCount
query {
  myPages(filter: { status: [draft, pending] }) {
    id
    title
    status
  }
}

사이트의 로케일 및 언어를 가져오는 필드 추가

다음 필드가 GraphQL 스키마에 추가되었습니다.

  • Root.siteLocale
  • Root.siteLanguage

예를 들어, 다음 쿼리를 실행하면:

{
  siteLocale
  siteLanguage
}

...다음과 같은 결과가 반환될 수 있습니다.

{
  "data": {
    "siteLocale": "en_US",
    "siteLanguage": "en"
  }
}

이러한 필드는 새로운 「Site」 모듈을 통해 제공됩니다. 이 모듈을 비활성화하면 GraphQL 스키마에서 해당 필드가 제거됩니다.

개선 사항 및 버그 수정

  • 「internal」 프라이빗 커스텀 엔드포인트 설치 (#2684)
  • 새로운 PRO 필드 _strBase64Encode에 대한 문서 추가 (#2673)
  • gatographql.com의 Extensions Reference에 확장 기능 링크 추가 (#2675)
  • About 페이지에 YouTube 채널 링크 추가 (#2676)
  • 사전 정의된 persisted queries 추가:
    • [PRO] Multilingual 사이트의 모든 페이지를 번역하고 생성하기 (Multisite / Gutenberg) (#2688)
    • [PRO] Multilingual 사이트의 모든 페이지를 번역하고 생성하기 (Multisite / 클래식 에디터) (#2688)
  • 확장 기능을 하이라이트 표시하고 웹사이트에서 방문할 수 있는 링크 활성화 (#2674)
  • GraphiQL 클라이언트(LocalWP용)가 이제 사이트 URL을 엔드포인트로 사용 (#2686)
  • int가 예상되는 곳에 string을 전달했을 때 발생하는 내부 서버 오류 (v2.4.1)

뉴스레터 구독하기

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