【问题标题】:Springfox - Manually, programmatically adding modelSpringfox - 手动,以编程方式添加模型
【发布时间】:2019-06-14 23:08:09
【问题描述】:

我想为 swagger API 描述符添加一个自定义控制器。 使用 spring fox 自定义现有模型非常容易。 但是我没有成功从头开始将自定义 API 添加到 swagger 描述符。 举个例子胜过长篇大论。

我做了一个测试项目springfox-test

我有一个控制器 (ItemController),它处理两个 URL(/item/name/item/number)并返回两个不同的 bean(ItemNameItemNumber)。

通过 ApiListingScannerPlugin 实现将这两个操作添加到 Swagger 并不难,但我必须引用我的 bean(ItemName 和 ItemNumber),我不知道如何以及在哪里可以描述这些 bean。

ApiListingBuilderPlugin 类似乎以这种方式工作,但我们只能访问 API 的构建器,然后我必须覆盖所有模型。

有没有办法请春狐来形容这些豆子?

【问题讨论】:

标签: java spring swagger springfox


【解决方案1】:

ApiListingScannerPlugin 似乎比简单 API 所需的工作要多得多。您应该能够消除该插件以及 SimpleUrlHandlerMapping bean,并像这样实现控制器。

@RestController
public class ItemController {
    @GetMapping("/item/name")
    public ItemName foo(@RequestParam("value") ItemName name) {
        return name;
    }

    @GetMapping("/item/number")
    public ItemNumber bar(@RequestParam("value") Integer number) {
        return new ItemNumber(number);
    }
}

Springfox 将根据这些方法签名检测两个端点和两个模型,并相应地生成 Swagger 描述。

【讨论】:

  • 当然我可以做到,但我的 git 项目只是我需要做的一个例子。我需要以编程方式为 servlet/控制器生成描述,因为 url 和 bean 是动态的。
  • 我想知道 Springfox 是否是正确的工具。您可以通过编写 Swagger 文件来节省时间(和代码)。相反,将控制器重构为传统形式可能比配置 Springfox 更省力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-26
  • 2011-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多