一次查询,搞定需求

举个例子,Book对象有bookTypeId,那我想看对应的bookTypeName,bookType对应的summary咋办?

如果你用RESTful Api ,免不了要定制接口或者多次调用后端。

现在用上GraphQL,就是这么无情:

#查询语句
query add{
book(bookId: 1){
bookName
author
bookType{
typeId
typeName
summary
}
wordNumbers
cover
clickTimes
lastupdate
createtime
}
}
#结果
{
"data": {
"book": {
"bookName": "斗战狂潮",
"author": "骷髅精灵",
"bookType": {
"typeId": "48",
"typeName": "修真文明",
"summary": "修仙觅长生,热血任逍遥,踏莲曳波涤剑骨,凭虚御风塑圣魂!"
},
"wordNumbers": 2547900,
"cover": "//qidian.qpic.cn/qdbimg/349573/1003694333/180",
"clickTimes": 3,
"lastupdate": "2018-02-23T00:00:00",
"createtime": "2018-02-23T11:33:57"
}
}
}

sql语句?各种定制化接口?不存在的,一个GraphQL查询搞定,美滋滋。

继续来一发,排行榜表和作品表,排行榜表记录了book_id,前端展示只需这样:

query rank {
rankList(rankTypeId: 1,first: 2) {
edges {
node {
bookId
book {
bookName
author
wordNumbers
}
order
rankTypeId
createtime
}
}
}
}
**自动根据节点id查询对应node信息,多帅哦**
{
"data": {
"rankList": {
"edges": [
{
"node": {
"bookId": 1,
"book": {
"bookName": "斗战狂潮",
"author": "骷髅精灵",
"wordNumbers": 2547900
},
"order": 1,
"rankTypeId": 1,
"createtime": "2018-02-24T00:28:37"
}
},
{
"node": {
"bookId": 2,
"book": {
"bookName": "就问你气不气",
"author": "秋刀斩鱼",
"wordNumbers": 1736500
},
"order": 2,
"rankTypeId": 1,
"createtime": "2018-02-24T00:32:23"
}
}
]
}
}
}

这么写下来,GraphQL果然还是很不错的。。

上个链接GraphQL

GraphQL 优势之处的更多相关文章

  1. vultr vps服务器存在的7个优势及选择原因

    原本准备在第一篇文章的时候完整的新注册账户的,但是考虑到对于这款VPS主机的了解,还是先整理这篇关于网络上和我自己在使用vultr vps主机产品的时候可能自认为的优势之处,这样可以加强很多新用户对于 ...

  2. 聊聊我对 GraphQL 的一些认知

    每隔一段时间就能看到一篇 GraphQL 的文章,但是打开文章一看,基本上就是简单的介绍下 GraphQL 的特性.很多文章其实就是 github 上找个 GraphQL 的项目,然后按照对应的 de ...

  3. 搭建自己的PHP框架心得(三)

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  4. 趋势型指标——MACD

    1.简要介绍▪ 计算方法▪ DIFF▪ DEA▪ MACD▪ 构造原理▪ 缺点2.实战技巧3.运用技巧▪ 应用原理▪ 经典用法▪ 实战战法▪ 捕捉卖点▪ 买卖策略▪ 短线实战4.组合指标运用5.一般研 ...

  5. stl-基本知识

    摘要:本文列出几个基本的STL map和STL set的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map, set选择问题,并分 ...

  6. stl 迭代器(了解)

    STL 主要是由 containers(容器),iterators(迭代器)和 algorithms(算法)的 templates(模板)构成的. 对应于它们所支持的操作,共有五种 iterators ...

  7. 转:Nginx+Apache环境的安装与配置

    转:http://www.server110.com/nginx/201404/8817.html 我们依然尽可能采用yum来安装我们需要的软件,由系统官方维护的软件,其安全性和稳定性都值得信赖,并且 ...

  8. asp.net mvc开发的社区产品相关开发文档分享

    分享一款基于asp.net mvc框架开发的社区产品--近乎.目前可以在官网免费下载,下载地址:http://www.jinhusns.com/Products/Download?type=whp 1 ...

  9. 探索PHP+Nginx(二) 安装PHP

    首先,我们简单了解一下什么是PHP,PHP(Hypertext Preprocessor 超文本预处理器) 和Java语言一样,PHP也是属于高级语言,并不能直接在操作系统上运行.Java运行需要虚拟 ...

随机推荐

  1. linux 根据进程名查看其占用的端口

    linux 根据进程名查看其占用的端口 pasting $ netstat -nap | grep pid    //查看进程ID 所占的端口 netstat -lnp 查看端口所在的进程 will ...

  2. 如何检测 51单片机IO口的下降沿

    下降沿检测,说白了就是满足这样一个逻辑,上次检测是1,这次检测是0,就是下降沿. 从这个条件可知,要确保能够正确检测到一个下降沿,负脉冲的宽度,必须大于一个检测周期,当负脉冲宽度小于一个检测周期,就有 ...

  3. oracle ---中文乱码问题

    ---- 1.原因分析 ---- 通过对用户反映情况的分析,发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题.那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语言文字显示而设定 ...

  4. 阻塞IO(blocking IO)

    在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据.对于n ...

  5. Python下OS模块重命名方法renames

    在python中有很多强大的模块,其中我们经常要使用的就是OS模块,OS模块提供了超过200个方法来供我们使用,并且这些方法都是和数据处理相关的,这里介绍下重命名这个方法. OS的重命名方法是os.r ...

  6. rpm yum 等命令无响应的解决方法

    yum 安装查询任何东西, rpm 安装查询任何东西,执行后无任何反应,直接卡住,也没任何错误信息给出,只能杀掉进程 # yum install XXXX # yum clean all # rpm ...

  7. 摄影之HDR

    摄影之HDR 高动态范围图像(High-Dynamic Range,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像 ...

  8. Java微信公众平台开发(六)--微信开发中的token获取

    转自:http://www.cuiyongzhi.com/post/44.html (一)token的介绍 引用:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access ...

  9. java多线程编程核心技术-笔记

    一.第一章 1.自定义线程类中实例变量针对其他线程有共享和不共享之分,自定义线程中的变量,如果是继承自thread类,则每个线程中的示例变量的更改,不影响其他线程2.当多个线程去访问一个局部变量是会产 ...

  10. Linux下安装Python2.7

    Linux下安装Python2.7 CentOS6.8 中默认安装了Python2.6,但是很多应用需要使用Python2.7,于是要学会如何在Linux下安装Python2.7,这里记录一下,免得以 ...