首页 > 解决方案 > 构建可编辑的 RESTful API

问题描述

是否可以构建一个可以实时修改的 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{"state":"on"}和服务器的答案是on. API Server 会显示灯一关闭,灯二打开。如何制作一个 API,它可以在不重新启动整个服务器的情况下编辑特定灯光的响应?用 C# 来做会很酷,但我会接受任何语言的响应。谢谢阅读。

标签: c#restapi

解决方案


如果我没看错的话,我不确定我看到这种架构的优势是什么?在您的示例中,light1 和 light2 是“light”类型的实体,它们共享一个位属性(状态)。

执行此操作的典型方法是创建一个端点,将实体 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 服务的端点(或任何功能)。

希望这可以帮助!


推荐阅读