相关实体的MVC6控制器

时间:2016-03-08 14:53:52

标签: asp.net-core-mvc

我希望使用ASP.NET 5 / MVC6通过REST API为客户提供对旧数据库的访问。 似乎有很多为单个实体编写控制器的例子,但我没有找到关于如何为相关实体编写控制器的指南。 在我的域模型中有f.e.两个实体类:

  • 设备
  • MeasuringPoint

每个设备可以有1..N个测量点。 我希望我的控制器只有Get操作,也就是说,API是只读的。 对于Device实体,我会使用

public class DevicesController : Controller
{
    // GET: api/devices
    [HttpGet]
    public IEnumerable<Device> Get()
    {
        //retrieve all devices
    }
    ...
}

下一步通常是让用户查询特定(选定)设备的所有测量点。

我该怎么写那个控制器动作? 建议的路由是什么以及如何设置?

对于客户端,我找到了以下建议:

获取api / devices / {ID} / measuringPoints

但我不知道这是如何实现的。

1 个答案:

答案 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) {...}
}