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

创建带有虚张声势注释的公共零部件

杜苏燕
2023-03-14

我正在为我的spring boot项目使用swagger注释。

我想为控制器的每个资源返回一个公共响应代码契约。

在文件中:https://github.com/swagger-api/swagger-core/wiki/annotations#apiresponses-apiresponse他们谈论@ApiResponses,但我不能将注释放在类级别。

以下是我所做的:

@Api(value = "Title",
    description = "What this controller is about"
)
@ApiResponses(value = { 
    @ApiResponse(code = 400, message = "Bad stuff from the client"),
    @ApiResponse(code = 404, message = "Item not found") }
    )
public class FooBarController {

      ...

}

但问题是400-客户端404-项目未找到中的坏东西从未显示在生成的文档中。

在昂首阔步的官方文件中,我看到了这一部分:https://swagger.io/docs/specification/describing-responses/#reuse

问题:如何创建一种带有java注释的“可重用组件”?

谢啦

共有1个答案

阮才俊
2023-03-14

根据文档,您可以在摘要级别执行此操作。

.useDefaultResponseMessages(false)
        .globalResponseMessage(RequestMethod.GET,
            newArrayList(new ResponseMessageBuilder()
                .code(400)
                .message("Bad stuff from the client")
                .build()))

https://springfox.github.io/springfox/docs/current/#springfox-springmvc和springboot

更新:

如果您想走注释路线,您可以创建自己的并将其放置在控制器上。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@ApiResponses(value = { 
    @ApiResponse(code = 400, message = "Bad stuff from the client"),
    @ApiResponse(code = 404, message = "Item not found") }
    )
public @interface GlobalApiReponses {
}

那就用它吧。。

@Api(value = "Title",
    description = "What this controller is about"
)
@GlobalApiReponses
public class FooBarController


多种方法的结合可能也是一个不错的选择。

@Target(ElementType.TYPE)意味着您可以在类级别应用它。您可以使用ElementType对方法执行相同的操作。方法

 类似资料:
  • null 另外,作为API开发人员,如果我不使用它,我会失去什么?

  • 在我的“简化”API中,所有响应都是从基本“响应”类派生(继承)的。响应类由一个填充元数据的头和一个包含用户请求的核心数据的主体组成。响应(在JSON中)的布局使得所有元数据都在第一个“层”上,而主体是一个称为“主体”的单一属性 我试图用以下JSON来定义这种关系: 然后,我尝试通过创建从body/header继承的各种body/header类来创建不同的响应,然后创建由相关的header/bod

  • 我想使用Swashuckle(swagger for. net)在WebAPI项目上进行基于API密钥的身份验证。 我已经配置了如下虚张声势: (见 https://github.com/domaindrivendev/Swashbuckle#describing-securityauthorization-schemes) 它似乎创建了我所期望的swagger文件: 但是当我进入UI并‘尝试’时

  • 我正在ASP中使用Swashback 5。NET webapi项目,具有所有默认设置。它序列化方法的输出,以便向我显示应答的模式。我得到的文档如下所示: 这是由以下C#代码生成的 结果在哪里。结果基本上是一个标准的对象列表,每个对象都包含这些键/值/id字段。我在这里读过https://conficient.wordpress.com/2014/05/22/getting-rid-of-k__ba

  • 我的中有以下操作。NET核心2控制器。它是一个API,应该存储作为应用程序/x-www-form-urlencoded发布的所有数据 所以斯瓦格UI允许使用UI尝试这个动作:斯瓦格UI 但是SwaggerUI生成带有正文的POST:formData=field 1=value e1&field 2=value e2 我希望它是:field1=value1 所以问题是,这是OpenAPI的限制,还是

  • 我需要处理从带有注释的类的公共方法中抛出的所有异常。我尝试使用Spring AOP。这是我的记录器: 是我的注释。 然后,我将注释添加到我的配置类中。 首先,我尝试注释一些引发异常的方法。它工作得很好,但是我如何才能使这种工作用于用注释注释的类中的所有公共方法呢?