一次查询,搞定需求

举个例子,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. FTP协议完全详解

    1. 介绍 FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.虽然我们也可以手工使用它,但是它的主要作用是供程序使用的.在阅读本文之前最好能够阅读TC ...

  2. PL/SQL 训练11--包

    --所谓包,就是把一组PL/SQL的代码元素组织在一个命名空间下.--一种可以把程序或者其他的PL/SQL元素比如游标.类型.变量的组织结构在一起的结构(包括逻辑结构和物理结构)--包提供了非常重要的 ...

  3. 使用springboot写一个简单的测试用例

    使用springboot写一个简单的测试用例 目录结构 pom <?xml version="1.0" encoding="UTF-8"?> < ...

  4. MIS系统部署方案

  5. delphi 在桌面屏幕上模拟鼠标单击

    delphi 在桌面屏幕上模拟鼠标单击 procedure TFrmUnicom.Button1Click(Sender: TObject); var oldPoint, newPoint: TPoi ...

  6. d3.js 清除svg

    rave.select(el).html(''); // 不推荐rave.selectAll("svg > *").remove(); // 移除svg内部节点rave.se ...

  7. Windows下查询指定端口进程,并杀死

    1. 找到指定端口的进程号 c:\devworks\lib\httpd-2.4.10-win32-VC9\Apache24\bin>netstat -ano|findstr "9000 ...

  8. java Web JSTL介绍及基本应用

    由于实际开发中我们一般不能在jsp页面上写java代码,而el表达式也做不了判断 循环之类的复杂操作,为了弥补这些缺点,所以就有了JSTL. 简介 JavaServer Pages Standard ...

  9. 认识WebRoot和WebContent目录

    1.webRoot是不需要加的,因为它是默认的JSP目录,完整的路径应该是:项目名/xxx.jsp,如果在webroot下边建立了文件夹abc,又在abc中建立了xxx.jsp那么此时的路径应为htt ...

  10. webservice CXF 相关面试题

    Web Service的优点(1) 可以让异构的程序相互访问(跨平台)(2) 松耦合(3) 基于标准协议(通用语言,允许其他程序访问) 1:WEB SERVICE名词解释.JSWDL开发包的介绍.JA ...