本篇教程由作者设定使用 CC BY-NC 协议。
须知
完整内容请参阅官方wiki: https://github.com/CyclopsMC/IntegratedREST/wiki/HTTP-POST-requests
因本人技术有限,该教程必定存在不足之处,敬请谅解。如果您有更好的建议,请在评论区指出。
对于本教程中的特定名词不做解释,比如:"JSON";请读者自行进行Bing搜索。
本教程假定读者已安装动态联合/集成动力所有的附属模组。
以下所有命令均在Windows10的CMD窗口进行发送,如果读者采用Linux或其他操作系统,应自行探索。
获取与更新数据
该模组会提供数个网页,http://localhost:3000 是主页面,玩家可以从这里知道其他页面的网址。读者可以在REST的配置文件中修改默认网址。
http://localhost:3000/networkElement 是游戏中所有变量卡/网络组件/代理器的集合。
以 http://localhost:3000/registry/ 开头的是数值设定、方块、物品等注册信息的集合,比如:http://localhost:3000/registry/mod 是游戏已加载的MOD列表。
获取数据
读者可以使用"curl -X GET "http://localhost:3000/networkElement/integrateddynamics/http/0" 命令来获取特定组件的信息,"http/0"表示游戏中第一个HTTP 代理器的ID,如果是变量卡或读取器等组件,应以"part/0"结尾。
需要注意的是:游戏中的"变量ID"或"组件ID"与网页中的"@ID"不一定相同(1.1.3版本)。读者应根据"http://localhost:3000/networkElement"网页提供的组件列表来查找对应的ID再修改命令。
读者可以根据网页中的组件信息来确定自己所想要读取或修改的组件,比如XYZ坐标,数值等。
更新数据
读者可以使用curl -X POST -d <value> <httpID>命令来更新HTTP代理器的数据。
比如:curl -X POST -d "{\"value\":true}" http://localhost:3000/networkElement/integrateddynamics/http/0。在Windows环境下,花括号内的冒号需要使用"\"进行转义,并且需要去除空格。
HTTP代理器需要设定为对应的数值类型才能更新,当代理器设为Item类型时,更新的命令如下:
curl -X POST -d {\"value\":{\"@type\":\"ValueItem\",\"resourceLocation\":\"integrateddynamics:wrench\",\"count\":2,\"nbt\":{\"key\":\"value\"}}} http://localhost:3000/networkElement/integrateddynamics/http/0
读者在1.1.3版本时,请尽量不更新Block类型,笔者对Block类型进行更新时,无法获取到对应资源。
已知报错
报错多数在更新数值时发生,最常见的报错是"error": "Resource was not found."此时应重新检查httpID是否与游戏中的对应。
"error": "com.google.gson.stream.MalformedJsonException" 为<value>中的空格未消除导致解析异常。
"error": "Invalid value type" 表示HTTP代理器需要Double类型,但是读者提供了其他类型给代理器。该语句后面会跟着代理器所需的类型与你提供的类型名称。
方便的工具
读者可以使用一些RPA自动化流程工具(比如Uibot)通过HTTP命令对HTTP代理器进行更新,或者获取数值进行逻辑运算等。这些工具可以图形化编程,可以方便的进行自动化设定。
通过这些工具,读者可以直接填入要更新的数值而不输入转义字符与消除空格。