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.からstring literalsを使用する必要があります
"""
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
リポジトリには複数の問題、議論、プルリクエストがあり、コミュニティの多くのメンバーが必要だと感じていたため、このための可能な構文を議論しようとしました。 Lee Byronと this Pull Request のおかげで、実際に従来のコメントを使用してスキーマ言語に説明を追加できます。
例えば、
// 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!
}
`);
また、0.7.0
よりも新しいgraphql
を使用している場合、コメントは実際にはフィールドまたはタイプの説明に変換されます。これを確認するには、スキーマでイントロスペクションクエリを実行します。
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(この記事を書いている時点での最新バージョン)でスキーマを最初に使用する方法では、フィールド、タイプ、または引数の上でcommentsを使用できます。
文字列リテラルはnotバージョン7.0以降の有効な構文です。