GraphQL查询及Java整合

简介:GraphQL是一种用于API的查询语言,被称为Restful的替代品,只有一个接口/graphql,它一次查询可以获取多个资源,用类型来区分资源,而Restful的一个接口只能返回一个资源,是用URL来区分资源。

1. 基础语法

  A. 查询请求构成:

    操作类型 操作名称(变量:字段类型 [= 默认值]) {

      方法名(字段:变量){

        需要返回的字段1

        需要返回的字段2

      }

    }

    操作类型:描述打算做什么类型的操作,如query、mutation、subscription;

    操作名称:指操作有意义和明确的名称;

  B. 关键字

    变量:其前缀必须是$,都必须是标量、枚举型或输入对象类型,可以附带默认值;

    fragment(片段),一组字段构成的可复用单元;

    指令:查询方法里控制字段是否返回,@include(if: Boolean)指参数为true时包含此字段,@skip(if: Boolean)指参数为true时跳过此字段;

    mutaion:GraphQL主要是数据查询,但也可以修改数据,一个变更可以包含多个字段,与查询的区别是查询字段是并行执行,而变更字段时是线性执行,一个接着一个

    内联片段:on Droid,用于查询字段里是对象,但是只取某个字段时的场景;

    元字段:__typename,用于不知道GraphQL服务提供什么类型,通过这个可以获取那个位置的对象类型名称;

    其他:[]代表数组或列表,!代表参数不能为空;

  C. 默认标量类型:

    Int:有符号32位证数;

    Float:有符号双精度浮点值;

    String:UTF-8字符系列;

    Boolean:true或false;

    ID:表示一个唯一标识符,不一定是可读型;

  D. 其余类型

    枚举类型:enum,是一种特殊的标量,它限制在一个特殊的可选值集合内;

    接口类型:interface,一个接口是一个抽象类型,它包含某些字段,而对象类型必须包含这些字段,才能算实现了这个接口;

    联合类型:union,与接口类似,但是它并不指定类型之间的任何共同字段,使用__typename;

    输入类型:input,传递复杂对象时使用,输入对象类型的字段不能拥有参数。

  E.客户端请求示例:

   D. 查询数据使用query,对应type,修改使用Mutation,对应input。

 

2. 高级

  A. 使用GraphQLObjectType定义类型type。

   B. GraphiQL支持调试模式;

   C. java调用GraphQL接口,需要引入graphql-client,可以用postman调用graphql接口调试

 

3. 工具

  A. 借助工具GraphQL Playground来模拟请求。

 

可参考:GraphQL中文网

    GraphQL深入

 

posted @ 2023-12-22 20:33  如幻行云  阅读(53)  评论(0编辑  收藏  举报