【发布时间】:2017-11-20 08:03:24
【问题描述】:
asp.net web API 中的以下代码运行良好,但在 Asp.net 核心中不起作用。
端点api/devices?query={"deviceName":"example"}
[HttpGet]
public Device ([FromUri] string deviceName)
{
var device = context.Computers.Where(x => x.deviceName == deviceName);
return device;
}
[FromUri] 属性不存在asp.net core web API,我尝试使用以下,但没有成功。
[HttpGet]
public Device Get([FromQuery] string deviceName)
{
return repo.GetDeviceByName(deviceName);
}
【问题讨论】:
-
看起来像非功能代码。 参数 被称为
query而不是deviceName。deviceName是一些类似 json 的查询参数的属性。对于获取,您应该只使用查询参数,并且对于请求正文中的数据进行后期传输。如果您真的希望这种非标准方式(根本不依赖于 ASP.NET Core)仍然有效,您需要编写自己的模型绑定器 -
在自己与这个问题搏斗了一段时间后,我最终意识到我需要做一个 POST 而不是 GET,即使我想要一个值。正在发送的数据虽然没有持久化,但仍然影响 API 的状态。您需要考虑 RESTful 接口的设计——这是关键。
-
我想tseng的意思是把它改成Get([FromQuery] string query)
标签: c# asp.net-mvc asp.net-web-api asp.net-core