我希望使用ASP.NET 5 / MVC6通过REST API为客户提供对旧数据库的访问。 似乎有很多为单个实体编写控制器的例子,但我没有找到关于如何为相关实体编写控制器的指南。 在我的域模型中有f.e.两个实体类:
每个设备可以有1..N个测量点。 我希望我的控制器只有Get操作,也就是说,API是只读的。 对于Device实体,我会使用
public class DevicesController : Controller
{
// GET: api/devices
[HttpGet]
public IEnumerable<Device> Get()
{
//retrieve all devices
}
...
}
下一步通常是让用户查询特定(选定)设备的所有测量点。
我该怎么写那个控制器动作? 建议的路由是什么以及如何设置?
对于客户端,我找到了以下建议:
获取api / devices / {ID} / measuringPoints
但我不知道这是如何实现的。
答案 0 :(得分:2)
您可以使用属性路由来实现您的目标。
如果您使用app.UseMvc()
在启动课程中启用了MVC,那么您已经通过RouteAttribute
支持路由。
[Route("api/[controller]")]
public class DevicesController : Controller {
// GET: api/devices
[HttpGet]
[Route("")]
public IEnumerable<Device> Get() {...}
...
// GET: api/devices/5/measuringPoints
[HttpGet]
[Route("{id}/measuringPoints")]
public IEnumerable<MeasuringPoint> GetMeasuringPoint(int id) {...}
}