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

如何在springdoc模式中描述标准Spring错误响应?

宗政松
2023-03-14

SpringBoot应用程序在出现未处理错误时的默认服务器响应为

{
    "timestamp": 1594232435849,
    "path": "/my/path",
    "status": 500,
    "error": "Internal Server Error",
    "message": "this request is failed because of ...",
    "requestId": "ba5058f3-4"
}

我想在应用程序路由的Springdoc注释中描述它。

假设有一个标准类DefaultErrorResponse(只是一个模拟名称),它可能如下所示:

@Operation(
  // ... other details
  responses = {
    // ... other possible responses
    @ApiResponse(
      responseCode = "500",
      content = @Content(schema = @Schema(implementation = DefaultErrorResponse.class)))
  }
)

在更糟糕的情况下,这样的类不存在,Spring只在引擎盖下使用Map来创建响应。那么这个注释将更加详细,包括明确提到响应中包含的每个字段。

显然,对于大多数路由,这一部分@ApiResponse(responseCode=“500”,…是相同的,最好减少重复。

在文档中介绍默认错误响应的正确方式是什么?

共有1个答案

佟阳云
2023-03-14

对于错误处理,可以将@RestControllerAdvice与@ExceptionHandler组合使用,以重构错误处理。

springdoc openapi会自动扫描这些spring注释。无需添加任何额外的招摇过市注释。

 类似资料:
  • 我在使用OpenApi和Spring定义API时遇到了一些问题。我正在使用此依赖项: 我的问题是,我想在不同的Api响应上定义一个@模式,但在每个响应中使用不同的描述和示例。 现在我有一个这样的回答: 还有其他类似的反应。。。 因此,我有三个不同描述和示例的对象“Balance”,但当它生成文档时,使用该对象的所有响应和字段都采用相同的描述和示例。 我已经看到,在生成的文件中,我将所有这些项目都带

  • 1.1.1. 驱动错误代码 1.1.1. 驱动错误代码 标准错误 E_DRIVER_ERROR 通用错误 E_INVALID_AUTHORIZATION 授权非法,并且不应该继续使用、刷新 E_DRIVER_SIGN_ERROR 签名错误(Token 超时时使用)提醒用户去 App 授权 E_DRIVER_DEVICE_NO_FOUND 设备不存在 E_DRIVER_TIMEOUT 设备控制超时

  • 问题内容: python内置了许多html和xml库,很难相信不支持实际的HTML解析。 我已经找到了很多很棒的第三方库来执行此任务,但是这个问题与python标准库有关。 要求: 仅使用Python标准库组件(任何2.x版本) DOM支持 处理HTML实体() 手柄部分文件(如:) 奖励积分: XPATH支持 处理未封闭/格式错误的标签。( 这是我要求的90%解决方案。这适用于我尝试过的有限的H

  • 问题内容: 是否存在用于构造来自API的JSON响应的标准或最佳实践?显然,每个应用程序的数据都是不同的,因此您不必担心很多,而是“响应样板”。我的意思的例子: 成功的请求: 请求失败: 问题答案: 是的,已经出现了一些标准(尽管对标准的定义有一些自由): JSON API -JSON API还涵盖创建和更新资源,而不仅仅是响应。 JSend-简单,可能已经在做。 OData JSON协议 -非常

  • 我的主要活动是 运行时的错误为 w/system.err:org.json.jsonException:org.json.jsonobject.get(jsonobject.java:392)上的描述没有值w/system.err:at org.json.jsonobject.getStri 列表项 ng(JSONObject.java:553) w/system.err:org.json.jso

  • 我目前正在使用Spring编写一个API后端,我想使用Spring Boot将其部署到正式服上。 如果我在Eclipse编译到war(在Maven中指定的)中运行后端,并使用Tomcat 7,它运行时没有问题。 然而,因为我想部署到服务器,我使用Spring Boot。 一个pplication.java 波姆。xml 当我将整个项目复制到我的linux服务器上,并运行maven包时,代码编译没有