我有这个:
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());
我试过这个,我在文档中找到了: 我认为这设置了accept-type
get ("/test", "application/json", (req, resp) -> {
return repository.getAll();
}, new JsonTransformer());
但我无处{{1}} application/json
标题
答案 0 :(得分:14)
经过研究,我发现了一种解决这个问题的优雅方法,我创建了一个before方法。
before((request, response) -> response.type("application/json"));
这会将响应类型添加到json。
您可以在路线后添加它,但以后可能会变得麻烦。 thx albertjan为您提示:)
答案 1 :(得分:5)
您可以使用Content-Type
函数设置响应的response.type
,如下所示:
get("test", (req, resp) -> {
resp.type("application/json");
return repository.getAll()
}, new JsonTransformer());
答案 2 :(得分:2)
第三种选择是使用后过滤器:
after((request, response) -> response.type("application/json"));