有人可以帮助我解决我正在尝试设置的路线
我必须知道我是否可以以及如何配置路由列表以便
本地主机/ API /设备/ 1 /命令/导通
{hostname} / {api section} {我会使用不同的命令设置多种类型的设备}
一些例子:
以上只是我想要做的事情的随机例子。
但底层结构是正确的。我想让多个设备具有特定于设备的命令和选项
我不知道如何在控制器中描绘这个? 对于每个设备,我会想到控制器的长度 在该设备下我会有不同的部分,如命令,信息等 然后根据每一个我都有动作方法。
但我不知道该怎么做。
任何帮助都会非常吸引人:
还有什么是更好的做法:
[HttpGet]
public HttpStatusCode Arm()
{
return HttpStatusCode.OK;
}
[HttpGet]
public HttpStatusCode StayArm()
{
return HttpStatusCode.OK;
}
[HttpGet]
public HttpStatusCode Disarm()
{
return HttpStatusCode.OK;
}
或:
[HttpGet]
public HttpStatusCode Command(string command)
{
switch (command)
{
case "arm":
{
}
break;
case "disarm":
{
}
break;
}
return HttpStatusCode.OK;
}
答案 0 :(得分:2)
方法1是更好的做法。它使您的代码更具可读性,可维护性和可测试性。
每个设备都没有控制器。你应该拥有的是一个控制器,它查询设备的数据库或服务,然后在该设备上执行操作。
您可以使用以下命令为控制器操作添加前缀,以便从路径中获取参数:
[HttpGet]
[Route("device/{deviceId}/commands/turnOff")]
public HttpStatusCode TurnOff(int deviceId)
{
// 1. Find device by deviceId
// 2. Turn the device off
return HttpStatusCode.OK;
}