是否可以构建可以实时修改的API?让我解释一下自己。
想象一下,我家里的所有灯都是由Raspberry PI管理的,这些PI通过“ http://192.168.1.2/”向API发送POST请求。第一盏灯将发送到“ http://192.168.1.2/light1/hello” {"state":"off"}
,服务器的答案将是off
,第二盏灯将发送到“ http://192.168.1.2/light2/hello” {{1 }},服务器答案将为{"state":"on"}
。 API服务器将显示灯一熄灭,而灯二点亮。如何制作一个API,在其中可以编辑特定灯光的响应而无需重新启动整个服务器?用C#做到这一点很酷,但是我会接受任何语言的响应。感谢您的阅读。
答案 0 :(得分:1)
如果我正确地阅读了此内容,则不确定是否知道此体系结构的优点是什么?在您的示例中,light1和light2是类型为“ light”的实体,它们共享位属性(状态)。
典型的宁静方法是创建一个端点,该端点将实体id用作路径的一部分,然后将状态与状态ID一起发送。然后,可以在不更改服务器代码的情况下编辑实体源(光源),并且不会通过端点公开潜在的重要信息(即光源名称)。
发布(切换状态)示例为http://192.168.1.2/light/hello/2,正文为{state:on}
,如果使用C#完成,则hello
是对LightController
的操作,并且2
将是操作的id
参数:
public void Hello(int id, [FromBody] object state)
和获取灯光状态的方法相同,但是使用HttpGet而不是HttpPost,当然没有任何内容(但是仍然发送id来获取单个灯光状态)。
您想使用另一个端点,例如light/all
来获取所有指示灯状态。
但是,不,您必须重新启动服务器,才能更改Web服务的端点(或任何功能)。
希望这会有所帮助!