Как добавить описание в поле " Язык схемы GraphQL"
У меня есть схема graphql, фрагмент которой выглядит так:
type User {
username: String!
password: String!
}
в graphiql есть поле описания, но оно всегда говорит "self-descriptive". Как добавить описания в схему?
3 ответов
Если вы используете GraphQL.JS версии 0.7.0 или выше, вы можете просто добавить комментарий непосредственно перед полем, типом или аргументом, который вы хотите описать. Например:
# A type that describes the user
type User {
# The user's username, should be typed in the login field.
username: String!
# The user's password.
password: String!
}
ниже версии 0.7.0 невозможно добавить описания внутри языка схемы.
обновление: начиная с версии версия v0.12.3 вы должны использовать строковые литералы
"""
A type that describes the user. Its description might not
fit within the bounds of 80 width and so you want MULTILINE
"""
type User {
"The user's username, should be typed in the login field."
username: String!
"The user's password."
password: String!
}
это отличный вопрос! И на самом деле имеет большую историю в graphql
мире.
было несколько вопросов, обсуждений и запросов на вытягивание на graphql-js
РЕПО, который пытался обсудить возможный синтаксис для этого, поскольку это было то, что многие члены сообщества считали необходимым. Спасибо ли Байрону и этот запрос на вытягивание, мы можем фактически добавить описания к языку схемы, используя традиционные комментарии.
для пример,
// Grab some helpers from the `graphql` project
const { buildSchema, graphql } = require('graphql');
// Build up our initial schema
const schema = buildSchema(`
schema {
query: Query
}
# The Root Query type
type Query {
user: User
}
# This is a User in our project
type User {
# This is a user's name
name: String!
# This is a user's password
password: String!
}
`);
и, если мы используем graphql
это новее, чем 0.7.0
, комментарии фактически превращаются в описание для полей или типов. Мы можем проверить это, выполнив запрос интроспекции в нашей схеме:
const query = `
{
__schema {
types {
name
description,
fields {
name
description
}
}
}
}
`;
graphql(schema, query)
.then((result) => console.log(result));
который дал бы нам результат, который выглядит так:
{
"data": {
"__schema": {
"types": [
{
"name": "User",
"description": "This is a User in our project",
"fields": [
{
"name": "name",
"description": "This is a user's name"
},
{
"name": "password",
"description": "This is a user's password"
}
]
},
]
}
}
}
и показывает нам, что #
комментарии были включены в качестве описаний для полей / комментариев, которые мы их разместили.
надеюсь, что помогает!
в случае, если вы используете Java реализация ....
на graphql-java
версия 7.0 (последняя версия на момент написания этой статьи) при первом подходе к схеме вы можете использовать комментарии над полем, типом или аргументом.
строковые литералы are не допустимый синтаксис начиная с версии 7.0.