gpt4 book ai didi

java - Spring Controller 总是生成json

转载 作者:行者123 更新时间:2023-12-01 09:17:42 25 4
gpt4 key购买 nike

是否有办法强制 spring 始终生成 json,即使没有数据可返回,甚至是空的 json 对象。我们的服务通过另一个服务拒绝任何无效 json 的响应(无论状态代码如何)。这不太好,但我们无法控制。

使用 Spring Controller ,您可以告诉它们生成 json,但这仅在有内容要返回时才有效。有没有一种快速而优雅的方法使所有响应都为 json?

@RequestMapping(value = "/test", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public
@ResponseBody
ResponseEntity<String> test(){
// if this returns null or an empty string the response body will be emtpy
// and the content-type header will not be set.
return service.getData();
}

这里的简单修复是简单地添加一个 if 语句来检查 null。但这很丑陋,因为我必须手动设置 header 和响应正文。

我希望有人知道更好的方法?

谢谢

最佳答案

如果您希望所有响应返回 application/json,那么您可以通过重写 HandlerInterceptorAdapter 中的 postHandle() 在一个位置进行设置>:

@Component
public class ResponseInterceptor extends HandlerInterceptorAdapter {

@Override
public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler,
final ModelAndView modelAndView) throws IOException {
if (response.getContentType() == null || response.getContentType().equals("")) {
response.setContentType("application/json");
}
}
}

你可以看看here

关于java - Spring Controller 总是生成json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com