当前位置: 首页 > 知识库问答 >
问题:

更改AbstractHttpMessageConverter中的响应代码

居焱
2023-03-14

是否可以更改AbstractHttpMessageConverter writeInternal()方法中的响应状态代码?

在我的抽象中(扩展MappingJackson2HttpMessageConverter),我希望将错误响应更改为200,并将实际的状态代码(例如400)添加到JSON中的状态字段中。

编辑1

我返回的代码如下:

JSONObject json= new JSONObject();
json.put("name", "My Name");
return new ResponseEntity<JSONObject>(json, HttpStatus.OK);
JSONObject json= new JSONObject();
json.put("error", "My Error");
return new ResponseEntity<JSONObject>(json, HttpStatus.BAD_REQUEST);

所以对于这两个变体来说,这意味着:

{ "status": 200, "response": { "name": "My Name" } }

{ "status": 400, "response": { "error": "My Error" } }

在这两种情况下,都将返回http状态200。

我想通过扩展MappingJackson2HttpMessageConverter和重写writeInternal方法来实现这一点,但不幸的是,我无法更改状态代码。

注我不想在我的控制器类中这样做。它们应该只返回基本json结构。

共有1个答案

许法
2023-03-14

不,这是不可能的。HttpMessageConverter可以设置某些标题并写入消息正文,但不能设置状态代码。在将对象发送到HttpMessageConverter之前,您可以将状态代码更改为200,并将属性设置为400。

我喜欢使用ResponseEntity对象,它允许您在设置对象的同时设置状态代码,但是如果没有看到您的代码,我不知道它是否适用于您。

 类似资料:
  • 我有一个用Java编写的Spring Boot应用程序,它是一个REST API。该服务(Svc A)调用REST API服务(Svc B),该服务也是用Java编写的Spring Boot应用程序。当没有找到数据时,Svc B返回404状态码。我需要将此响应更改为200状态代码,并返回一个空响应对象。我不确定是否或如何做到这一点。 我可以捕捉错误,并确定404是否是这个没有数据发现的错误。但是,

  • 今天早上在wards上,我面临一个react原生android构建的问题。代码中的新更改不反映在设备上。没有生成失败。我试了以下几种 已删除并重新安装节点模块 反应-本机链接 ./gradlew clean 反应-本机包--平台android--开发人员false--条目-文件index.js--bundle-输出android/app/src/main/assets/index.android.

  • 我有下面的servlet过滤器。

  • 我正在尝试使用OWIN外部登录到Google/Facebook。 面临的问题是owin挑战不断将响应类型从令牌更改为代码。 挑战生成以下URL:https://accounts.google.com/o/oauth2/auth?response_type=code 这将返回来自google的错误。如果我改变response_type令牌(response_type=令牌)它的工作。 下面是OAut

  • 问题内容: 在似乎是填充得很好,但不管是什么方法,我用,我似乎无法获取适配器来填充数据。我曾尝试添加到,也添加到。无论哪种方式,我都无法在水平上或在其本身上获得响应(当然,它什么也没做)。谁能看到什么问题? } LogCat显示data.size()中期望的值数,但autoCompleteAdapter.getCount()中显示为零。 问题答案: ArrayList似乎可以很好地填充,但是无论我

  • 如图所示,添加操作显示“响应类(状态200)”。但是,add操作的实现方式使其永远不会返回200。一旦成功,它就会返回201。 我的问题是如何将(状态200)更改为(状态201)?本部分代码如下: 谢谢