在aspnetcore mvc

时间:2017-03-16 14:27:49

标签: asp.net-mvc .net-core hateoas

我正在尝试构建一个系统,用于在aspnetcore webapi控制器方法的json响应中提供链接信息。理想情况下,我想从命名路由中查找正确的URI,而不是对URI进行硬编码。路径可能位于当前控制器或同一项目中的另一个控制器中 - 但我的所有路由都已命名,我只使用属性路由。

这是一个(人为的)示例控制器,展示了我想要实现的目标:

[Route("api/foos")]
public class FooController : Controller
{
    [HttpGet("",Name="GetAllFoos")]
    public async Task<ListWithLinks<FooInfo>> GetAllFoos()
    {
         var foos = await fooRepo.GetAll();
         return foos;
    }

    [HttpGet("{id:int}",Name="GetFooById")]
    public async Task<Foo> GetFoo(int id)
    {
         var foo = await fooRepo.Get(id);
         foo.AddLink("self","GetFooById",foo.Id); // get uri eg "api/foos/123"
         foo.AddLink("all","GetAllFoos"); // get uri "api/foos"
         foo.AddLink("bar","GetBarById",foo.BarId); // get uri from another controller eg "api/bars/987"
         return foo;
    }
}

正如您在上面的第二种方法中所看到的,我想在GetFoo(int id)的响应中添加3个链接。我有填写路径中的参数所需的信息,但我不知道如何找到并处理该路由信息以生成URI路径(注意,我已经从HttpContext获得了baseUri)。

有人能指出我正确的方向吗?

0 个答案:

没有答案