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

如何使用Spring Boot修改HttpServletResponse以在json中包含一些标准属性?[副本]

潘畅
2023-03-14

我正在用spring Boot编写一个REST API应用程序。我希望json响应的签名如下所示:

{
  "status": "Error"
  "httpcode": 500
  "dev_message": "ServerException"
  "user_message": "Oops..something went wrong with the app. Please try again."
  "response": {
    ...
   }
}
{
  "status": "Success"
  "httpcode": 200
  "dev_message": "APICallSuccess"
  "user_message": "Successfully called API"
  "response": {
      "userid": "test",
      "age": 31 
       ...
      "country": "India"
   }
}
  1. 如何在Spring MVC/Spring Boot中实现这一点?我知道这涉及RequestHandlerInterceptorFilters,但是信息太多,我无法缩小范围。
  2. 这是构建API的正确方法吗?我希望客户真正知道哪里出了问题,而不是仅仅返回http状态代码。

编辑1:下面的很多答案都是针对控制器级别的。我希望使用过滤器在更高的执行级别上处理这一点。假设存在身份验证失败,那么我的请求甚至不会到达控制器。在所有这样的情况下,我希望在一个地方实现成功和失败消息,以便它是干净和容易理解的。

共有1个答案

翁良弼
2023-03-14

我相信您正在寻找以下内容:使用Spring ResponseEntity操作HTTP响应https://www.baeldung.com/spring-response-entity

@GetMapping("/age")
ResponseEntity<String> age(
  @RequestParam("yearOfBirth") int yearOfBirth) {

    if (isInFuture(yearOfBirth)) {
        return new ResponseEntity<>(
          "Year of birth cannot be in the future", 
          HttpStatus.BAD_REQUEST);
    }

    return new ResponseEntity<>(
      "Your age is " + calculateAge(yearOfBirth), 
      HttpStatus.OK);
}

您可以设置错误404,403任何您想要的。如果有用请告诉我

 类似资料:
  • 问题内容: 我想创建一个XML文件,该文件将用于存储Java程序的结构。我能够成功解析Java程序并根据需要创建标签。当我尝试,包括我的标签中的源代码,就会出现问题,因为Java源代码可以使用的实体引用广大和保留的字符,如,,,。我无法创建有效的XML。 我的XML应该像这样: 这样,但是问题是条件表达式或其他语句中有很多或其他保留的符号,这妨碍了XML的验证。由于所有这些数据(源代码)都是由用户

  • 问题内容: 我有以下问题。我需要获取UI属性: 返回字符串,并且有效。但是,如果我遍历密钥集,则永远不会得到密钥。有谁知道为什么会这样吗?我得到了三种不同的方式(,和),但这些工作的任何人。 编辑 :我也找到了JFileChooser类的属性列表,其中包含一些不会出现在键集中的属性。问题是:如何以编程方式获取所有这些属性? 编辑 :代码示例: 此代码返回打印这些属性。键不出现在输出中。 问题答案:

  • 我需要包括一些必须在许多tmpls中重复的php代码。我怎么能做到这一点,可能是因为类包括?我怎么能写PHP文件与我的类在一个正确的方式?换句话说,我需要像 视图/类别/胎压监测/默认值。php 视图/文章/TPM/默认值。php 我的班级。php ... 更新:@Guilherme谢谢你!所以现在看起来 文件/mytemplate/html/com\u content/article/defau

  • 我们正在探索在Android项目中包含一些现有的C库,并被推荐使用JNI。我看到的大多数参考资料都建议这样做:https://medium.com/@ssarel/create-your-first-jni-Application ation-on-android-with-the-ndk-5f149508fb12,您可以在其中生成本机标头和代码以与Java交互。 假设您不能修改本机库,这仍然是最

  • 我想知道我正在尝试更新集合用户文档的一个或两个属性,这些属性包括 假设我只想更新用户名,如果我正在使用以下命令运行save,那么: 它将我的用户更改为: 但理想情况下,我只想更改我的用户名。 我的用户控制器是: 我的服务Impl是: 我的mongoRepository是: 请帮助我用Spring data mongodb以正确的方式实现这一点。

  • 问题内容: 标签中可以包含哪些有效的html元素(如果有)? 问题答案: 内联元素(除其他外)可以包含其他内联元素和文本节点。锚点可以包含一个范围,该范围可以包含一个文本节点。 通常,块级元素可以包含内联元素和其他块级元素。通常,内联元素可以仅包含数据和其他内联元素。这种结构上的区别固有的思想是,块元素比内联元素创建“更大”的结构。 在其他的答案指出,你不能嵌套的在。