Esquema GraphQL y especificación de tipo

El esquema se utiliza para definir la estructura de datos, por ejemplo, qué atributos hay en el objeto Usuario y cuál es la relación entre los objetos, etc.

Consulte el documento del sitio web oficial: http://graphql.cn/learn/schema/

Estructura de definición de esquema

schema { #定义查询 
    query: UserQuery 
}
type UserQuery { #定义查询的类型 
    user(id:ID) : User #指定对象以及参数类型 
}
type User { #定义对象 
    id:ID! # !表示该属性是非空项 
    name:String 
    age:Int 
} 

Tipos escalares

En la especificación GraphQL de tipos enumerados, se definen 5 tipos de forma predeterminada:

  • Int: entero de 32 bits con signo.
  • Float: valor de coma flotante de precisión doble con signo.
  • Cadena: secuencia de caracteres UTF-8.
  • Booleano: verdadero o falso. 
  • ID: el tipo escalar de ID representa un identificador único, generalmente utilizado para recuperar el objeto o como clave en la caché.

Los cinco tipos definidos en la especificación obviamente no pueden satisfacer las necesidades, por lo que en varias implementaciones de lenguaje, los tipos se han expandido, es decir, GraphQL admite tipos personalizados, por ejemplo, la implementación graphql-java agrega: Long, Byte, etc.

Tipo de enumeración El tipo de
enumeración es un escalar especial, que está restringido a un conjunto especial de valores opcionales.

enum Episode { #定义枚举 
    NEWHOPE 
    EMPIRE 
    JEDI 
}
type Human { 
    id: ID! # !表示该属性是非空项 
    name: String! # !表示该属性是非空项 
    appearsIn: [Episode]! #使用枚举类型 
    homePlanet: String 
} 

 

Interfaz (interfaz)
Como muchos sistemas de tipos, GraphQL admite interfaces. Una interfaz es un tipo abstracto, que contiene ciertos campos, y el tipo de objeto debe contener estos campos para que se considere que implementa esta interfaz.

Por ejemplo, puedes usar una interfaz de personaje para representar cualquier personaje de la trilogía "Star Wars":

interface Character { #定义接口 
    id: ID! # !表示该属性是非空项 
    name: String! # !表示该属性是非空项 
    friends: [Character] 
    appearsIn: [Episode]! 
}
#实现接口 
type Human implements Character { 
    id: ID! 
    name: String! 
    friends: [Character] 
    appearsIn: [Episode]! 
    starships: [Starship] 
    totalCredits: Int 
}
type Droid implements Character { 
    id: ID! 
    name: String! 
    friends: [Character] 
    appearsIn: [Episode]! 
    primaryFunction: String 
} 

 

Supongo que te gusta

Origin blog.csdn.net/qq_26896085/article/details/104832969
Recomendado
Clasificación