⭐️ Application Passwords 지원, WordPress Multisite 호환성, 페이지 mutations을 포함한 v2.4 릴리스
Gato GraphQL v2.4가 여러 가지 개선 사항 및 버그 수정과 함께 릴리스되었습니다.
Application Passwords 지원
이제 WordPress Application Passwords를 사용하여 GraphQL 엔드포인트에 인증된 요청을 보낼 수 있습니다.
예를 들어, USERNAME과 PASSWORD 값을 대체하여 GraphQL 서버에 curl 명령을 실행할 때 application password를 전달할 수 있습니다.
curl -i \
--user "USERNAME:PASSWORD" \
-X POST \
-H "Content-Type: application/json" \
-d '{"query": "{ me { name } }"}' \
https://mysite.com/graphqlGato 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.createPageRoot.updatePagePage.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.myPageRoot.myPagesRoot.myPageCount
query {
myPages(filter: { status: [draft, pending] }) {
id
title
status
}
}사이트의 로케일 및 언어를 가져오는 필드 추가
다음 필드가 GraphQL 스키마에 추가되었습니다.
Root.siteLocaleRoot.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 추가:
- 확장 기능을 하이라이트 표시하고 웹사이트에서 방문할 수 있는 링크 활성화 (#2674)
- GraphiQL 클라이언트(LocalWP용)가 이제 사이트 URL을 엔드포인트로 사용 (#2686)
- int가 예상되는 곳에 string을 전달했을 때 발생하는 내부 서버 오류 (v2.4.1)