【问题标题】:HATEOAS JAX-RS Link-HeadersHATEOAS JAX-RS 链接头
【发布时间】:2016-05-27 18:05:34
【问题描述】:

我目前正在尝试使用原始 JAX-RS 构建一个 RESTful API。我了解到,在构建 REST API 时,有一个叫做 HATEOAS(超媒体作为应用程序状态引擎)的原理。在我的课堂上,我们使用 Link Headers 来告诉客户如何进一步推进应用程序。我已经设法实现了所有基本功能,并且可以在将应用程序部署到 tomcat 服务器后访问服务器。 我现在的问题是,如何添加包含通配符供用户填写的标题链接,例如 id?

到目前为止我已经尝试过

@Path("/resources")
@Produces(MediaType.APPLICATION_JSON)
public Response listAllResources() 
{
     List<TestResource> resources = ...
     // get stuff from database
     return Response.ok(resources)
                    .link(UriInfo.getAbsolutePathBuilder().path("{id}").build(), "edit")
                    .build;
}

在我尝试访问上面定义的路径后,我收到一条错误消息,指出模板变量 id 未定义。 我找不到任何有用的资源来告诉我如何创建如下所示的链接标题:

link: <http://example.com/api/resources/{id}>; rel: "edit"

我希望我的问题足够清楚,因为这是我关于 stackoverflow 的第一个问题 :)

提前致谢!

【问题讨论】:

    标签: java rest jersey jax-rs hateoas


    【解决方案1】:

    我发现,像我的示例 http://example.com/api/resources/{id} 这样的链接在 JAX-RS 中是不可能的,因为 UriBuilder 试图解析任何被花括号包围的 URL 部分。因此,如果您想提供 Uri 模板,请使用 http://example.com/api/resources/:id。不幸的是,客户端必须执行类似 String.replace() 的操作才能真正“创建”一个有效的 URI。

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多