У меня есть схема graphql, фрагмент которой выглядит так:
type User {
username: String!
password: String!
}
В graphiql есть поле описания, но оно всегда говорит «самоописательное». Как добавить описания к схеме?
У меня есть схема graphql, фрагмент которой выглядит так:
type User {
username: String!
password: String!
}
В graphiql есть поле описания, но оно всегда говорит «самоописательное». Как добавить описания к схеме?
Если вы используете 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!
}
"My description"
- person Casey; 10.01.2018
description
в параметрах декоратора. например. @ObjectType({description:'Here'})
. То же самое для @Field({description:...}, @Arg and @Query
- person 3nuc; 11.09.2019
Это большой вопрос! И на самом деле имеет великую историю в 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 (последняя версия на момент написания) с подходом «сначала схема» вы можете использовать комментарии над полем, типом или аргументом.
Строковые литералы недействителен синтаксисом в версии 7.0.