1

我们能否在 Rest Service 中同时提供 Json 响应和 csv 文件作为附件?

我已经编写了如下代码,但我也确信它不会工作。

            ResponseBuilder responseBuilder = null;
        responseBuilder = Response.status(200).type(MediaType.APPLICATION_JSON)
                .entity(parseOrganizations(getOrganizationsResponseMashery(limit, offset)));
         responseBuilder.type(MediaType.TEXT_PLAIN).entity(file).header("Content-Disposition", "attachment; filename=Organizations.csv");
        return responseBuilder.build();

带有文件的实体的第二个设置器基本上覆盖了我之前作为实体插入的 json 内容。所以请建议。

4

1 回答 1

1

是的,没错,HTTP 响应应该是单一类型的。如果您告诉您返回 JSON,那么客户端将期待 JSON 对象,而不是文件。同样,如果你说你返回一个文件,它会期待一个文件。

客户端将根据响应标头中声明的返回类型采取行动(例如:将 JSON 对象映射到类实例等),因此明确这一点很重要。

在 springboot 的情况下,似乎最后一次调用该type方法会覆盖前一次调用。

于 2019-12-19T09:49:49.973 回答