#api #graphql #wiki.js
#API #graphql #wiki.js
Вопрос:
Я совершенно новичок в GraphQL, и я не понимаю, как составить PageMutation
create
вызов для Wiki.js . Их игровая площадка GraphQL доступна в общедоступных документах. Схема для создания:
type PageMutation {
create(
content: String!
description: String!
editor: String!
isPublished: Boolean!
isPrivate: Boolean!
locale: String!
path: String!
publishEndDate: Date
publishStartDate: Date
scriptCss: String
scriptJs: String
tags: [String]!
title: String!
): PageResponse
На страницах документации GraphQL говорится, что параметры мутации должны быть объявлены как входные, но это не так. Кроме того, я не видел описания для такого рода структуры (объект в объекте?), И я не вижу, как его использовать.
Приветствуются подсказки. Спасибо
Комментарии:
1. поиграйте с игровой площадкой, она подсказывает возможные строки кода … создайте жестко заданную мутацию, а затем параметризуйте ее с помощью переменных запроса… не сильно отличается от обычной, простой, плоской схемы graphql
Ответ №1:
Итак, вот пример создания страницы без переменных, только сама мутация:
mutation Page {
pages {
create (content:"contenuto", description:"descrizione", editor: "code", isPublished: true, isPrivate: false, locale: "it", path:"/", tags: ["tag1", "tag2"], title:"titolo") {
responseResult {
succeeded,
errorCode,
slug,
message
},
page {
id,
path,
title
}
}
}
}
Подробности в документах GraphQL.
Вот пример с переменными:
mutation Page ($content: String!, $descrizione: String!, $editor:String!, $isPublished:Boolean!, $isPrivate:Boolean!, $locale:String!, $path:String!,$tags:[String]!, $title:String!) {
pages {
create (content:$content, description:$descrizione, editor: $editor, isPublished: $isPublished, isPrivate: $isPrivate, locale: $locale, path:$path, tags: $tags, title:$title) {
responseResult {
succeeded,
errorCode,
slug,
message
},
page {
id,
path,
title
}
}
}
}
Переменные запроса:
{
"content": "contenuto",
"descrizione":"descrizione",
"editor": "code",
"isPublished": true,
"isPrivate": false,
"locale": "it",
"path":"/pagina01",
"tags": ["tag1", "tag2"],
"title":"titolo"
}