GraphQL

作者: 紫雨杰 | 来源:发表于2020-07-16 20:00 被阅读0次

    一、GraphQL是什么?

    GraphQL 是一种查询语言、一个执行引擎,也是一种规范;
    GraphQL 最大的优势是查询图状数据;
    GraphQL对API中的数据提供了一套易于理解的完整描述,使得客户端能够准确的获取它需要的数据,而且没有任何冗余,也让API更容易随时间推移而演进;

    官网:http://graphql.org
    中文网: http://graphql.cn/

    二、特点:

    1、按需索取请求需要的数据,比如有多个字段,我们可以只取需要的某几个字段;
    2、获取多个资源,只用一个请求;
    3、API的演进无需划分版本,便于维护,根据需求平滑演进,添加或隐藏字段;

    三、GraphQL 和 RestFul 的区别:

    1、restful 一个接口只能返回一个资源,GraphQL 一次可以获取多个资源;
    2、restFul使用不同的URL来区分资源,而GraphQL是用类型区分资源;

    四、如何操作:

    1、下载安装Node.js,node和npm会一起安装;
    2、执行命令: npm init -y (-y 的目的是为了生成package.json);
    3、执行命令:npm install express graphql express-graphql -S;
    4、上述命令执行安装成功之后,执行js文件: node HelloWorld.js
    5、访问:http://localhost:3000/graphql

    简单的HelloWorld 代码:
    
    const express = require('express');
    const {buildSchema} = require('graphql');
    const {graphqlHTTP} = require('express-graphql');
    
    
    // 定义Schema,  查询方法和返回值类型
    // Account 为自定义类型
    const schema = buildSchema(`
      type Account {       //注意: Account 是自定义的类型
          name: String
          age: Int          //注意:Int首字母大写
          sex: String
          department: String 
      }
      
      type Query {
          hello: String
          accountName: String     //注意:字段之间没有逗号
          age: Int
          account: Account
      }
    `)
    
    
    //定义查询对应的处理器
    const root = {
       hello: () => {
           return 'Hello World';
       },
       accountName: () => {
           return '李四';
       },
       age: () => {
           return 18;
       },
       account: () => {
          return {
            name: '张三',
            age: 19,                //注意:字段之间有逗号
            sex: '男',                      
            department: '开发部'
          }   
       }
    }
    
    const app = express();
    
    app.use('/graphql', graphqlHTTP({
        schema: schema,
        rootValue: root,
        graphiql: true
    }))
    
    app.listen(3000);
    
    helloworld.png
    调试界面.png

    相关文章

      网友评论

          本文标题:GraphQL

          本文链接:https://www.haomeiwen.com/subject/xsljhktx.html