【问题标题】:Swagger ApiModelProperty for value class值类的 Swagger ApiModelProperty
【发布时间】:2017-01-08 11:18:16
【问题描述】:

我正在尝试使用 Swagger Play2 Module 为 Play 应用程序生成 api 文档。我们使用很多值类来增加一些额外的类型安全性和代码可读性。

其中一个操作会为案例类生成 JSON,如下所示:

case class MyResponse(prop1: MyValueType, prop2: MyValueType)

其中MyValueType是这样一个值类:

case class MyValueType(value: String)

使用自定义 Format[T] 将其格式化为 JSON 格式的字符串。

Swagger UI 生成如下示例 JSON 代码:

{
  "prop1": {
      "value": "string"
  },
  "prop2": {
      "value": "string"
  }
}

虽然我希望它生成这个:

{
  "prop1": "string",
  "prop2": "string"
} 

我尝试过这样的自定义注释,但这似乎不起作用:

case class MyResponse(
  @ApiModelProperty(dataType="string") prop1: MyValueType, 
  @ApiModelProperty(dataType="string") prop2: MyValueType, 
)

关于如何做到这一点的任何提示?

【问题讨论】:

  • 当你尝试这个时什么不起作用?你能描述一下错误吗?

标签: scala playframework swagger


【解决方案1】:

试试 dataType="String" 大写

【讨论】:

    【解决方案2】:

    Swagger 将您的 case class MyValueType 包裹在您的 case class MyResponse 中。

    它忽略了你的dataType注解,仍然在解析MyValueType

    您是否尝试过对您的属性进行更完整的注释?比如:

    case class MyResponse(@ApiModelProperty(
                              value = "Property 1",
                              dataType="string") prop1: MyValueType, 
                          @ApiModelProperty(
                              value = "Property 2",
                              dataType="string") prop2: MyValueType)
    

    顺便说一句,Swagger 中的数据类型不区分大小写,因此string 等价于String

    【讨论】:

      【解决方案3】:

      我试过@ApiModelProperty(dataType = "String")@ApiModelProperty(dataType = "string")。它们都不起作用。

      但是,@ApiModelProperty(dataType = "java.lang.String") 在我的情况下有效。

      我的 springfox 版本:

      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
          <version>2.6.1</version>
      </dependency>
      
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger-ui</artifactId>
          <version>2.6.1</version>
      </dependency>
      

      【讨论】:

        猜你喜欢
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 2018-11-20
        • 1970-01-01
        相关资源
        最近更新 更多