10

我有这个:

get ("/test", (req, resp) -> {
    return repository.getAll();
}, new JsonTransformer());

我的变压器看起来像:

public class JsonTransformer implements ResponseTransformer {

    ObjectMapper om = new ObjectMapper();

    public JsonTransformer() {
    }

    @Override
    public String render(Object o) throws Exception {
        return om.writeValueAsString(o);
    }
}

我尝试在响应中使用标头功能添加标头,如下所示:

get ("/test", (req, resp) -> {
    resp.header("Content-Type", "application/json");
    return repository.getAll();
}, new JsonTransformer());

我已经尝试过我在文档中找到的这个:我认为这设置了接受类型

get ("/test", "application/json", (req, resp) -> {
    return repository.getAll();
}, new JsonTransformer());

但我无处可application/json作为我的Content-Type标题

4

3 回答 3

17

好吧,在研究之后,我找到了一种解决这个问题的优雅方法,我创建了一个 before 方法。

before((request, response) -> response.type("application/json"));

这会将响应类型添加到 json。

您可以在路由后添加它,但以后可能会变得麻烦。谢谢 albertjan 给你的小费 :)

于 2015-01-06T10:01:15.063 回答
6

Content-Type使用如下函数设置响应response.type

get("test", (req, resp) -> {
    resp.type("application/json");
    return repository.getAll() 
}, new JsonTransformer());
于 2014-11-12T20:05:16.697 回答
2

第三种选择是使用后过滤器:

after((request, response) -> response.type("application/json"));

请参阅:http ://sparkjava.com/documentation#filters

于 2017-09-05T14:00:48.923 回答