初识野狗(WildDog)之数据增删改查 – 野狗REST api使用

野狗云
野狗实时通讯云

试用了一下野狗云,感觉好到非常。这种开发方式对传统数据库(sql)必然造成很大影响(程序狗一定要居安思危),或者说新的云时代真正来临了。

我所理解的野狗云,就是云端的数据库,但不是传统的mysql,oracle,sqlserver,而是基于key-value存储的文档数据库,或者叫no-sql?不知道这样说准不准确。访问方式基于的http协议,get、post、put、delete等(当然有验证机制)。这样来讲,我们就可以通过其他的url访问工具,例如curl进行数据的增删改查了,官方的文档正是这样写的。

官方文档中使用REST方式操作数据同样使用的是curl工具,感觉写的不是很详细。

今天使用了postman模拟http请求野狗数据的整个过程,包括增加、追加、更新、删除、查询数据的简单操作(不要问我为什么把顺序写成这样),记录一下。

概念:
数据,或者说一张表,野狗中都叫做节点,可以看下野狗的基础概念文档

先来个官方的简短说明,数据操作包含以下五种请求类型:

方法 说明
PUT 向指定 节点写入数据。若此节点已存在数据,会覆盖原有数据。
POST 向指定节点添加 子节点。子节点的 key 自动生成并保证唯一。
PATCH 更新指定子节点。
DELETE 删除指定节点。

增加数据(节点):
使用http请求put方式,请求https://wild-sheep-1485.wilddogio.com/movie.json上面的movie.json就是节点名称,将创建一个名为movie的节点,如下图:

postman请求http put方法为野狗云增加数据
postman请求http put方法为野狗云增加数据(左边是野狗后台,右边是postman)

需要注意的是Headers中要增加Content-Type=application/json键值对,并且Body选项卡要设置raw格式,点击Send将创建movie节点,并为其增加一个movie1的子节点(一条数据),可以看到使用了两个字段(节点,一切皆节点)name和actor。注意:put操作会先清空指定节点,再写入数据。

追加数据(这个非常有必要说明)
传统的sql中插入数据不管表里有没有数据,只要闭着眼睛执行insert into行了。那么既然put操作会先清空指定节点,然后再写入数据,那么我追加数据的时候总不能先把以前的数据取出来,然后再加上一条,然后再put吧(对不对,讲道理嘛)。所以搞了半天,弄明白追加数据是这样的,如图:

野狗云api使用http patch追加数据
野狗云api使用http patch追加数据

可以看到这次使用的patch方法,节点名称movie.json等都没有改变,就为movie增加了一个movie3子节点,并且actor写成了集合形式。

更新数据
更新数据与追加数据一样,也是使用的patch方法,如图:

野狗api使用http patch更新指定节点
野狗api使用http patch更新指定节点

比如我要更新movie节点下movie3的name(从铁达尼号变成泰坦尼克号),就要使用patch方式,注意请求的地址(野狗中叫路径)

删除数据
比如要把上图中的actor中的0(迪卡普里奥删掉),那么需要执行delete请求,请求地址为:https://wild-sheep-1485.wilddogio.com/movie/movie3/actor/0.json(可以看到节点查找方式,即路径名称),删除之后的节点为:

野狗云http delete删除节点
野狗云http delete删除节点

查询数据
你以为查询数据最简单了?Oh no,虽然执行get是很简单,比如获取所有的数据(节点),我又新增了user节点和数据:

野狗云api使用http获取所有节点
野狗云api使用http获取所有节点

注意路径是以 .json结尾,标识获取所有节点,若要获取某个确定的节点,只需指定节点名即可,比如user.json

查询数据官方还支持orderBy和过滤等操作,暂时没详细看传送门。
先写到这里,感谢野狗两位大牛 @六金、@董笑飞的热心解答。

学习新知识是自我蜕变的过程,如果你在刻标记的地方捞剑,你可能捞到的不是剑 (:P

技术知识积累分享, 应用地址未打码, 请勿黑 .
原创文章,转载请注明出处与本文章链接 https://lison.cc/?p=590

Leave a Reply

Your email address will not be published. Required fields are marked *

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。