Wiki.js GraphQL: пример создания страницы

#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"
}