java - Spring HATEOAS 模板链接无效下载方法

标签 java spring spring-hateoas

我的 Controller 中有一个方法如下:

    @RequestMapping(value = "/download/attachment/{attachmentId}", method = RequestMethod.GET)
public void download(@PathVariable("attachmentId") String attachmentId, HttpServletRequest request,
        HttpServletResponse response) throws IOException {
    InputStream file = myCustomObject.getAttachmentById(attachmentId);
    response.setContentType("application/octet-stream");
    response.flushBuffer();
}

我想使用 Spring 提供的 ControllerLinkBuilder 类生成指向此方法的模板化 HATEOAS 链接。我的链接应如下所示:

"download" : {
          "href" : "https://localhost:8080/download/attachment/{attachmentId}"
}

我使用以下代码在我的 ResourceAssembler 类(扩展了 ResourceAssemblerSupport)中执行此操作:

            Link downloadAttachmentLink = linkTo(MyRestController.class, MyRestController.class
                .getMethod("download", String.class, HttpServletRequest.class, HttpServletResponse.class),
                "{attachmentId}").withRel("download");

我从中得到的链接不是模板化的。它是 URL 编码的。 “{”作为 %7B 发送。我不希望这种事发生。有人可以建议什么吗?

最佳答案

好的,所以我使用以下方法解决了这个问题:

            Link downloadAttachmentByIdLink = new Link(
                new UriTemplate(
                        linkTo(MyRestController.class,
                                MyRestController.class.getMethod("download", String.class,
                                        HttpServletRequest.class, HttpServletResponse.class),
                                "").toUriComponentsBuilder().build().toUriString(),
                        new TemplateVariables(
                                new TemplateVariable("attachmentId", TemplateVariable.VariableType.SEGMENT))),
                "download");

关于java - Spring HATEOAS 模板链接无效下载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064026/

相关文章:

java - 如何在 Java 中对 EnumSet 中的元素进行洗牌/随机化?

java - Spring 启动 + REST + HATEOAS + HAL

java - Spring-Boot 多个数据库目标依赖项

java - Spring HATEOAS - 两个相同的链接

java.lang.NoSuchMethodError : org. apache.tomcat.util.res.StringManager.getManager with tomcat in Spring hetos

java - 应用程序在菜单膨胀时崩溃。如何纠正?

java - Spring SimpleJdbcCall 返回错误值

java - 如何将小程序的内容转为图片?

java - 如何使用 Autowiring 在 spring 中从属性文件中检索键的值

java - spring boot中两个实体之间的多对多关系