使用变换器时,如何从spark向响应添加标头

alb*_*jan 8 java java-8 spark-java

我有这个:

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

我的变压器看起来像:

public class JsonTransformer implements ResponseTransformer {

    ObjectMapper om = new ObjectMapper();

    public JsonTransformer() {
    }

    @Override
    public String render(Object o) throws Exception {
        return om.writeValueAsString(o);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在响应中使用标题函数添加标题,如下所示:

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

我尝试过在文档中找到的内容:我认为这会设置接受类型

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

但无处我得到application/json我的Content-Type头

Gab*_*iel 15

在研究之后我发现了一种解决这个问题的优雅方法,我创建了一个before方法.

before((request, response) -> response.type("application/json"));
Run Code Online (Sandbox Code Playgroud)

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

您可以在路线后添加它,但以后可能会变得麻烦.thx albertjan为你的小费:)


alb*_*jan 5

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

get("test", (req, resp) -> {
    resp.type("application/json");
    return repository.getAll() 
}, new JsonTransformer());
Run Code Online (Sandbox Code Playgroud)