【问题标题】:Manually describing Swagger input/output models (without Java domain class)手动描述 Swagger 输入/输出模型(没有 Java 域类)
【发布时间】:2016-04-04 13:36:18
【问题描述】:

我们有一个使用 Spring MVC 构建的现有 REST API。 我们现在正在测试是否可以使用 Swagger(快速)生成内部文档。

我们的 REST 实现的问题是我们确实使用 Spring MVC 将业务对象转换为 json,但是我们有自定义的 json 转换器,基本上从业务对象创建 Jettison json 对象(键/值)。不幸的是,目前没有办法改变这一点。 顺便说一句,输入也是如此。 它基本上总是我们发送给客户端的 Hashmap。

因为我们可以使用 Springfox 生成控制器和它的方法是一个好的开始。 但我们也想记录输入/输出。 有没有办法使用 Swagger Annotation 手动记录输入/输出模型而不参考 Java 域类?

替代方案是我们完全编写自己的低级 Swagger 规范或研究其他解决方案。

【问题讨论】:

    标签: spring-mvc swagger springfox


    【解决方案1】:

    为什么不使用弹簧rest-docs?我认为当您的服务模型不是真正的强类型时,这正是您可能需要的。它有几个优点

    • 您可以为每个端点编写测试
    • 模型将始终反映现实,而不是有办法在外部描述您的模型并将其提供给 springfox 基础架构。
    • 如果模型是由外部提供的,那么在没有某种测试的情况下,真的不可能让这些变化跟上现实。

    这可能不在您的控制范围内,这就是您提出这个问题的原因,但重申一下显而易见的替代方法是让您的模型反映客户的期望,而不是松散的 json-key-value转化率。

    【讨论】:

    • 嗨 Dilip,我对 Spring RESTDocs 非常熟悉 :-) 但我目前需要生成 swagger 规范。
    • 不确定它是否容易。你有一个项目如何使用 jettison 的例子吗?我们或许可以想办法
    • 可能不容易或不可能;-) 创建 Jettison JSONObject 并使用例如json.put("name", name) 存储键/值。
    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2020-05-05
    • 2020-11-23
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多