首页 文章

Swagger ApiModelProperty用于值类

提问于
浏览
1

我正在尝试使用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, 
)

有关如何完成此任务的任何提示?

2 回答

  • 0

    尝试使用大写的dataType =“String”

  • 1

    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 .

相关问题