在Web API中生成超媒体链接

Jor*_*Day 20 c# hateoas hypermedia asp.net-web-api

我很想知道别人如何处理为他们的网络API生成超媒体链接的问题?具体来说,我正在使用ASP.NET Web API,并且在操作返回与超媒体相关的类型,或者返回资源本身,以及在管道中稍后发生超媒体内容之间徘徊.也就是说,人们倾向于做以下事情:

public Resource<Order> GetOrder(int id) { 
  return new Resource<Order>() {
      Content = new Order(),
      Links = new LinkCollection<Order>() { new AddOrderLink(), new UpdateOrderLink()}
  }
Run Code Online (Sandbox Code Playgroud)

或者更喜欢的东西

public Order GetOrder(int id) { return new Order(); }
Run Code Online (Sandbox Code Playgroud)

然后在HttpOperationHandler或自定义格式化程序或其他内容中添加超媒体链接?

如果方法更像#2,你怎么知道要生成什么链接?只是为所有Order对象生成一些标准的链接集?在OrdersController中装饰各种操作的属性?

Ben*_*ter 24

我更喜欢选项二(在管道中稍后添加超媒体链接)并在博客上谈到昨天这样做.

解决方案是在使用消息处理程序返回客户端之前,使用超媒体链接"丰富"我的资源.


Die*_*cia 9

你可以使用github的Hyprlinkr

我打算在我的下一个项目中使用它,因为它很容易做到并且你可以通过nuget包获得它.

  • 因此,当您知道要生成哪些链接时,Hyprlinkr是实际生成链接的一个很好的解决方案.我的问题更多的是"如何知道我需要生成哪些链接",而不是"我应该如何生成它们?" 无论哪种方式,一旦你到达"如何"部分,Hyperlinkr确实有助于解决问题. (3认同)