這份快速參考備忘單提供了 GraphQL 的簡要概述
| :- | - |
|---|---|
schema | GraphQL 架構(gòu)定義 |
query | 讀取和遍歷數(shù)據(jù) |
mutation | 修改數(shù)據(jù)或觸發(fā)動作 |
subscription | 發(fā)生事件時運行查詢 |
| :- | - |
|---|---|
Int | 有符號 32 位整數(shù) |
Float | 有符號雙精度浮點值 |
String | UTF-8 字符序列 |
Boolean | 對或錯布爾值類型 |
ID | 唯一標識符 |
| :- | - |
|---|---|
scalar | 標量類型 |
type | 對象類型 |
interface | 接口類型 |
union | 聯(lián)合類型 |
enum | 枚舉類型 |
input | 輸入對象類型 |
| :- | - |
|---|---|
String | 可空字符串 |
String! | 非空字符串 |
[String] | 可空字符串列表 |
[String]! | 可空字符串的非空列表 |
[String!]! | 非空字符串的非空列表 |
type Query {
users(limit: Int): [User]
}
type Query {
users(limit: Int = 10): [User]
}
type Query {
users(limit: Int, sort: String): [User]
}
type Query {
users(limit: Int = 10, sort: String): [User]
}
type Query {
users(limit: Int, sort: String = "asc"): [User]
}
type Query {
users(limit: Int = 10, sort: String = "asc"): [User]
}
input ListUsersInput {
limit: Int
since_id: ID
}
type Mutation {
users(params: ListUsersInput): [User]!
}
scalar Url
type User {
name: String
homepage: Url
}
interface Foo {
is_foo: Boolean
}
interface Goo {
is_goo: Boolean
}
type Bar implements Foo {
is_foo: Boolean
is_bar: Boolean
}
type Baz implements Foo, Goo {
is_foo: Boolean
is_goo: Boolean
is_baz: Boolean
}
實現(xiàn)一個或多個接口的對象
type Foo {
name: String
}
type Bar {
is_bar: String
}
union SingleUnion = Foo
union MultipleUnion = Foo | Bar
type Root {
single: SingleUnion
multiple: MultipleUnion
}
一個或多個對象的聯(lián)合
enum USER_STATE {
NOT_FOUND
ACTIVE
INACTIVE
SUSPENDED
}
type Root {
stateForUser(userID: ID!): USER_STATE!
users(state: USER_STATE, limit: Int = 10): [User]
}
{
hero {
name
}
}
結(jié)果:
{
"data": {
"hero": {
"name": "R2-D2"
}
}
}
{
hero {
name
# 查詢可以有注釋!
friends {
name
}
}
}
結(jié)果:
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{ "name": "Luke Skywalker" },
{ "name": "Han Solo" }
]
}
}
}
{
human(id: "1000") {
name
height
}
}
結(jié)果:
{
"data": {
"human": {
"name": "Luke Skywalker",
"height": 1.72
}
}
}
{
human(id: "1000") {
name
height(unit: FOOT)
}
}
結(jié)果:
{
"data": {
"human": {
"name": "Luke Skywalker",
"height": 5.6430448
}
}
}
{
empireHero: hero(episode: EMPIRE) {
name
}
jediHero: hero(episode: JEDI) {
name
}
}
結(jié)果:
{
"data": {
"empireHero": {
"name": "Luke Skywalker"
},
"jediHero": {
"name": "R2-D2"
}
}
}
{
leftComparison: hero(episode: EMPIRE) {
...comparisonFields
}
rightComparison: hero(episode: JEDI) {
...comparisonFields
}
}
?
fragment comparisonFields on Character {
name
appearsIn
friends {
name
}
}
結(jié)果:
{
"data": {
"leftComparison": {
"name": "Luke Skywalker",
"appearsIn": [
"NEWHOPE",
"EMPIRE",
"JEDI"
],
"friends": [
{ "name": "Han Solo" },
{ "name": "Leia Organa" },
{ "name": "C-3PO" },
{ "name": "R2-D2" }
]
},
"rightComparison": {
"name": "R2-D2",
"appearsIn": [
"NEWHOPE",
"EMPIRE",
"JEDI"
],
"friends": [
{ "name": "Luke Skywalker" },
{ "name": "Han Solo" },
{ "name": "Leia Organa" }
]
}
}
}
query HeroComparison($first: Int = 3) {
leftComparison: hero(episode: EMPIRE) {
...comparisonFields
}
rightComparison: hero(episode: JEDI) {
...comparisonFields
}
}
?
fragment comparisonFields on Character {
name
friendsConnection(first: $first) {
totalCount
edges {
node {
name
}
}
}
}
結(jié)果:
{
"data": {
"leftComparison": {
"name": "Luke Skywalker",
"friendsConnection": {
"totalCount": 4,
"edges": [
{
"node": {
"name": "Han Solo"
}
},
{
"node": {
"name": "Leia Organa"
}
}
]
}
},
"rightComparison": {
"name": "R2-D2",
"friendsConnection": {
"totalCount": 3,
"edges": [
{
"node": {
"name": "Luke Skywalker"
}
},
{
"node": {
"name": "Han Solo"
}
}
]
}
}
}
}
query HeroNameAndFriends {
hero {
name
friends {
name
}
}
}
結(jié)果:
{
"data": {
"hero": {
"name": "R2-D2",
"friends": [
{ "name": "Luke Skywalker" },
{ "name": "Han Solo" },
{ "name": "Leia Organa" }
]
}
}
}
# { "graphiql": true, "variables": { "episode": JEDI } }
query HeroNameAndFriends($episode: Episode) {
hero(episode: $episode) {
name
friends {
name
}
}
}
變量前綴必須為 $,后跟其類型
query HeroNameAndFriends($episode: Episode = "JEDI") {
hero(episode: $episode) {
name
friends {
name
}
}
}
query Hero($episode: Episode, $withFriends: Boolean!) {
hero(episode: $episode) {
name
friends @include(if: $withFriends) {
name
}
}
}
{ "episode": "JEDI", "withFriends": false }
結(jié)果:
{
"data": { "hero": { "name": "R2-D2" } }
}
@include(if: Boolean) 僅在參數(shù)為 true 時,包含此字段@skip(if: Boolean) 如果參數(shù)為 true,跳過此字段mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
createReview(episode: $ep, review: $review) {
stars
commentary
}
}
{
"ep": "JEDI",
"review": {
"stars": 5,
"commentary": "This is a great movie!"
}
}
結(jié)果:
{
"data": {
"createReview": {
"stars": 5,
"commentary": "This is a great movie!"
}
}
}
query HeroForEpisode($ep: Episode!) {
hero(episode: $ep) {
name
... on Droid {
primaryFunction
}
... on Human {
height
}
}
}
{ "ep": "JEDI" }
結(jié)果:
{
"data": {
"hero": {
"name": "R2-D2",
"primaryFunction": "Astromech"
}
}
}
{
search(text: "an") {
__typename
... on Human {
name
}
... on Droid {
name
}
... on Starship {
name
}
}
}
結(jié)果:
{
"data": {
"search": [
{
"__typename": "Human",
"name": "Han Solo"
},
{
"__typename": "Human",
"name": "Leia Organa"
},
{
"__typename": "Starship",
"name": "TIE Advanced x1"
}
]
}
}
感谢您访问我们的网站,您可能还对以下资源感兴趣:
国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片