加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 可选参数与Play 2和Swagger

发布时间:2020-12-16 09:15:56 所属栏目:安全 来源:网络整理
导读:我试图使用Swagger来记录一个Play 2 REST API,但是swagger-play2似乎没有理解 Scala选项类型定义的可选参数 – 在Play 2中进行param可选的常规方法: GET /documents controllers.DocumentController.getDocuments(q: Option[String]) 我想要q参数是可选的.
我试图使用Swagger来记录一个Play 2 REST API,但是swagger-play2似乎没有理解 Scala选项类型定义的可选参数 – 在Play 2中进行param可选的常规方法:

GET /documents controllers.DocumentController.getDocuments(q: Option[String])

我想要q参数是可选的.有一个与该选项[String]参数匹配的注释控制器方法.在启动时,我在日志中得到UNKOWN TYPE,api-docs生成的json破坏了swagger-ui:

UNKNOWN TYPE: scala.Option
[info] play - Application started (Dev)

有没有另外一种方式来指定Play 2中的可选参数,并且Swagger明白了吗?

解决方法

目前我发现的一个解决方法是从params列表中删除param,使用Swagger的@ApiImplicitParams注释,并从控制器方法中的请求对象中获取参数.然后Swagger会认为param是可选的.

GET /documents controllers.DocumentController.getDocuments()

然后在控制器中:

@ApiOperation(...)
@ApiImplicitParams(Array(
  new ApiImplicitParam(name = "q",value = "Query",required = false,dataType = "string",paramType = "query"),))
def getDocuments = Action { implicit request => 
  // use param via request object
}

这肯定不如使用Scala的Option类型,但它产生正确的Swagger文档.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读