whatshot[2019-07-20更新] hu60wap6:网页插件数据存储API

@Ta 2019-07-20 2326点击

[2019-07-20] 因为容易遭到CSRF攻击,不再允许通过GET请求新增/修改/删除键值,需要改为POST方式提交。通过GET方式查询键值不受影响。
[2019-07-17] 添加前缀匹配、仅列出长度,以及把数据作为文件下载/载入的功能。


现在网页插件可以存储自定义数据了,并且可以把存储的自定义数据作为文件下载/载入。
本帖将分别介绍如何存储数据,以及如何将其作为文件下载。

自定义数据为键值对形式,具体限制如下:

key只能为小写字母、数字、下划线、减号,且长度限制为255字节,如以下正则表达式:
[a-z0-9_-]{0,255}

value只能为字符串,长度限制为16MB,二进制安全(所以可以存储图片等小文件)。


数据存储API

注意:所有用于新增/修改/删除键值的演示链接都不会生效。因为容易遭到CSRF攻击,不再允许通过GET请求新增/修改/删除键值,需要改为POST方式提交。

设置指定键的值

https://hu60.cn/q.php/api.webplug-data.json?key=name&value=xxxxxxxx
https://hu60.cn/q.php/api.webplug-data.json?key=name1&value=xxx222xxx22
https://hu60.cn/q.php/api.webplug-data.json?key=aabbcc1&value=bc2
https://hu60.cn/q.php/api.webplug-data.json?key=aabbcc2&value=bc3

列出所有自定义键值对:

https://hu60.cn/q.php/api.webplug-data.json

查询指定的键

https://hu60.cn/q.php/api.webplug-data.json?key=name

前缀匹配查询

https://hu60.cn/q.php/api.webplug-data.json?key=name&prefix=1
https://hu60.cn/q.php/api.webplug-data.json?key=aa&prefix=1

仅获取值的长度

https://hu60.cn/q.php/api.webplug-data.json?onlylen=1
https://hu60.cn/q.php/api.webplug-data.json?key=name&onlylen=1
https://hu60.cn/q.php/api.webplug-data.json?key=aa&prefix=1&onlylen=1

设置value为空,删除指定的键值对

https://hu60.cn/q.php/api.webplug-data.json?key=name&value=

前缀匹配设置/删除键值对

https://hu60.cn/q.php/api.webplug-data.json?key=aabbcc&value=ddd&prefix=1
https://hu60.cn/q.php/api.webplug-data.json?key=name&value=&prefix=1

删除所有键值对

注意:点击以下链接(不会,因为现在会报错)让你丢失网页插件存储的所有自定义数据
https://hu60.cn/q.php/api.webplug-data.json?key=&value=&prefix=1

通过POST传递参数

可以用POST方式传递keyvalueprefixonlylen等参数,作用和GET方式传递相同。

返回的数据结构

{
    "success": true,
    "islogin": true,
    "data": "xxx"
}

若数据存在,data为string类型。若数据不存在,data为null。
不指定key时,data可能为null(该用户从未存储过键值对),空数组(该用户的所有键值对均被删除),或者包含所有键值对的object。

发生错误时:

{
    "success": false,
    "islogin": true,
    "errmsg": "xxxxxx"
}

把数据作为文件下载

下载单个键的内容

name为要作为文件下载的键。

https://hu60.cn/q.php/api.webplug-file.name.txt
https://hu60.cn/q.php/api.webplug-file.name.png
https://hu60.cn/q.php/api.webplug-file.name.js
https://hu60.cn/q.php/api.webplug-file.name.css
https://hu60.cn/q.php/api.webplug-file.name.dat?mime=application/my-file-mime

用以上URL,键的内容就可直接作为js、css等web资源载入页面。

下载多个键的内容

多个键的内容仅能作为JSON下载,但可设置MIME。

https://hu60.cn/q.php/api.webplug-file.name.json?prefix=1
https://hu60.cn/q.php/api.webplug-file.name.json?prefix=1&mime=application/octet-stream

下载全部键的内容:
https://hu60.cn/q.php/api.webplug-file.json
https://hu60.cn/q.php/api.webplug-file.json?mime=application/octet-stream

回复列表(7)
  • 1
    000
    @Ta / 2017-03-25
    cool 有的玩了。为防止与不同的插件冲突,建议使用的时候定义一个固定的key前缀,例如“hu60_name”,"hu60_age" 之类。。
  • 2
    @Ta / 2017-03-25

    嗯,可以用插件名做前缀。

  • 3
    @Ta / 2017-05-27
    @老虎会游泳,其实,可以把hu60做成微信小程序了,毕竟所有的界面都已经可以直接获得json数据
  • 4
    @Ta / 2017-05-27

    @cnhong,嗯,你可以做一个

  • 5
    000
    @Ta / 2019-07-17

    总觉得不作匹配就能直接删除所有键值对有些危险,但话说回来没其他人用所以无所谓
    斗图专属版

  • 6
    @Ta / 2019-07-17

    @000,主要是为了给用户提供删除所有插件数据的功能。UI已经位于网页插件设置页面。

  • 7
    000
    @Ta / 2019-07-18

    @老虎会游泳,哦~这倒是挺方便的
    斗图专属版

添加新回复
回复需要登录

[聊天-此处没有老虎] 情醉中国风:百度鉴黄 Redmi K.O