restql 中with 参数的内容在restql 中实际上就是http request 的请求内容。按照restql 的设计
method 分为 from (get) , to (post) ,into(put) ,update (patch), delete (delete), 实际开发中,好多
团队对于from (get) 的处理可能并不是按照 rest标准的处理,我们可能需要使用to 处理

to 格式说明

  • 格式
 
to users
  with
    id = "user.id"
    username = "user.name"
    password = "super.secret"

http post 格式

POST http://some.api/users/
BODY { "id": "user.id", "username": "user.name", "password": "super.secret"

wtih 参数的格式

with 支持简单数据类型以及复杂格式(json,数组扁平处理 )

  • 支持的数据类型
- 字符串,使用双引号
- 数字,可以是浮点类型 ,科学计数不支持
- 布尔类型,true,false
- 列表类型,使用中括号包含
- key/value 数据结构,类似json
- 从其他查询引用的值,使用引号以及`.`引用,类似json 字段引用

变量引用

我们可以方便的传递参数,

  • 格式如下
from superheroes
    with
        name = $heroName
        level = $heroLevel
        powers = $heroPowers
 

对应的http 请求为

localhost:9000/run-query?heroName="Superman"&heroLevel=99&heroPowers=["flight","heat vision","super strenght"]

展开以及扁平处理

使用展开以及扁平功能,我们我们方便的进行传递参数的处理

  • 参考扩展使用
from superheroes as party
    with
        id = [1, 2, 3]

http 请求格式

GET http://some.api/superhero?id=1
GET http://some.api/superhero?id=2
GET http://some.api/superhero?id=3
  • 参考扁平处理
    使用-> 会镜像进行转换
 
        from superheroes as fused
         with
          id = [1, 2, 3] -> flatten
 

http 格式

GET http://some.api/superhero?id=1&id=2&id=3

值编码

可以对于参数参数编码(比如base64,json)

  • 参考使用
from superheroes as hero
    with
        stats = {health: 100,
                 magic: 100} -> json // encode this value as a json string
from superheroes as hero
    with
        bag = {capacity: 10} -> base64
 
 

选择返回值

使用only 我们可能选择应用需要的数据

  • 参考格式
from superheroes as hero
    with
        id = 1
    only
        name
        items
        skills.id
        skills.name
        nicknames -> matches("^Super")

说明:
其中我们可以使用match 进行进一步的数据过滤

忽略错误

有时对于数据查询的错误我们可能不太感兴趣,我们可恶意使用忽略错误

  • 参考格式
 
from products as product
from ratings
  with
    productId = product.id
  ignore-errors

请求头处理

很多时候我们基于请求头进行api 的认证处理,restql 提供了请求头参数的处理

  • 参考格式
from superheroes as hero
headers
    Authorization = "Basic user:pass"
    Accept = "application/json"
with
    id = 1

超时控制

很多时候接口响应比较慢,我们可以通过设置超时时间

  • 参考格式
from superheroes as hero
headers
    Authorization = "Basic user:pass"
    Accept = "application/json"
timeout 200
with
    id = 1

cache 请求头控制

我们可以添加cache 请求头,方便proxy 对于请求资源的cache 处理

use max-age = 600
from products

请求头

参考资料

http://docs.restql.b2w.io/#/restql/query-language?id=expanding-and-flattening

restql 学习三 查询语言简单说明的更多相关文章

  1. WebSocket 学习(三)--用nodejs搭建服务器

    前面已经学习了WebSocket API,包括事件.方法和属性.详情:WebSocket(二)--API  WebSocket是基于事件驱动,支持全双工通信.下面通过三个简单例子体验一下. 简单开始 ...

  2. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  3. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  4. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  5. wordpress学习四: 一个简单的自定义主题

    在学习三里分析了自带的一个例子,本节我们就自己仿照他做个简单的吧,重点是调用wordpress封装好的函数和类,css和html可以稍好在调整. 将wp带的例子复制一份处理,重新名个名字. 清空ind ...

  6. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  7. day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  8. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  9. day 89 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

随机推荐

  1. 为什么我的resharper控件安装之后没有显示

    Resharper和Resharper C++有时候会出现,安装之后不显示,VisualStudio菜单栏内找不到的情况,大多数是因为启动VisualStudio的时候没有激活Resharper. 安 ...

  2. python jieba 分词进阶

    https://www.cnblogs.com/jiayongji/p/7119072.html 文本准备 到网上随便一搜"三体全集",就很容易下载到三体三部曲的全集文本(txt文 ...

  3. linux ,查看端口

    netstat -antlp | grep java 注:grep java是过滤所有java进程

  4. Laravel框架中Echo的使用过程

    今天的这篇文章中给大家分享关于laravel框架中echo的使用,文章的内容是一步一步来的,用了16步走完一个过程,过程很清晰,希望可以帮助到有需要的朋友吧.话不多说,直接看内容.官方文档推荐使用 P ...

  5. vue 复制文本到剪切板上

    1.下载clipboard.js npm install vue-clipboard2 --save 2.引入,可以在mian.js中全局引入也可以在单个vue中引入 import Clipboard ...

  6. 阿里云ECS服务器CentOS7.2安装Python2.7.13

    阿里云ECS服务器CentOS7.2安装Python2.7.13 yum中最新的也是Python 2.6.6,只能下载Python 2.7.9的源代码自己编译安装. 操作步骤如下: 检查CentOS7 ...

  7. 关于source insight 置顶窗口或者处于前台挡住窗口解决办法

    两个办法,分别如下: 1.重启source insight: 2.按两次F11:

  8. 【转】常用PLC通讯协议

    三菱FX系列PLC通讯测试 发送帧(Hex): 起始(STX) 02 命令(CMD) 30 首地址(ADDRESS) 30 30 41 30 字节数(BYTES) 30 31 终止(ETX) 03 校 ...

  9. iOS - 逆向调试自用工具(reveal 14 Hopper Go2Shell ifunboxmac MachOView Alfred Go2Shell iTerm)

    研究了挺长一段时间的逆向感觉没啥可弄的了,再深处对我也用处不大,渐渐兴趣有些掉头了.最近有问我要工具的朋友,分享一些常用工具给用到的朋友. 用法自己百度吧,这里不再赘述. 图例(希望看到你想要的): ...

  10. XSS相关有效载荷及绕道的备忘录(下)| 文末有打包好的负载

    前言: 今天发布的是下半部分 进入正题 过滤的绕过和一些奇异的有效载荷 大小写绕过 <sCrIpt>alert(1)</ScRipt> 绕过标签黑名单 <script x ...