GraphQL - API查询语言
查询和修改
查询
{
hero {
name
# Queries can have comments!
friends {
name
}
}
}
传递参数
每个字段和嵌套对象都可以传递一组参数
{
human(id: "1000") {
name
height(unit: FOOT)
}
}
定义别名
查询具有不同参数的同一字段时
{
empireHero: hero(episode: EMPIRE) {
name
}
jediHero: hero(episode: JEDI) {
name
}
}
使用片段
片段让您可以构建字段集,然后将它们包含在您需要的查询中。
{
leftComparison: hero(episode: EMPIRE) {
...comparisonFields
}
rightComparison: hero(episode: JEDI) {
...comparisonFields
}
}
fragment comparisonFields on Character {
name
appearsIn
friends {
name
}
}
操作名称
操作类型是查询、变异或订阅
// 操作类型 操作名称
query HeroNameAndFriends {
hero {
name
friends {
name
}
}
}
变量
$episode 是变量,以$开头 可以给变量设置默认值 类型旁边的!表示必须
query HeroNameAndFriends($episode: Episode! = JEDI) {
hero(episode: $episode) {
name
friends {
name
}
}
}
指令
指令可以附加到字段或片段包含 @include(if: Boolean)如果参数为true,则仅在结果中包含此字段。 @skip(if: Boolean)如果参数是true,跳过此字段。
query Hero($episode: Episode, $withFriends: Boolean!) {
hero(episode: $episode) {
name
friends @include(if: $withFriends) {
name
}
}
}
突变
一种修改服务器端数据的方法 查询是并行的,突变的串行的
mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
createReview(episode: $ep, review: $review) {
stars
commentary
}
}
内联片段 TODO
// TODO