我正在尝试使用Swagger来记录Play 2 REST API,但swagger-play2
似乎并不理解使用Scala Option
类型定义的可选参数- 在Play 2中使参数可选的常规方法:
GET /documents controllers.DocumentController.getDocuments(q: Option[String])
Run Code Online (Sandbox Code Playgroud)
我希望q
param是可选的.这个Option[String]
参数有一个匹配的带注释的控制器方法.在启动时,我进入UNKOWN TYPE
日志并由api-docs生成的json中断swagger-ui
:
UNKNOWN TYPE: scala.Option
[info] play - Application started (Dev)
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法可以在Play 2中指定可选参数并让Swagger理解它?
我能够通过Play设置Swagger并尝试Swagger-ui ......我必须说它真的很棒.
使用ApiOperation
,ApiImplicitPara
等记录我的控制器的操作很容易,并且按预期工作.
然而,由于我对Swagger的了解有限,我在为类型的隐式参数定义模式时遇到了问题body
.我想要映射到隐式参数的类如下所示:
@ApiModel(value "User", description = "Represents an user")
class User private(private var json: JsValue) {
private def setValue(key: JsPath, value: JsValue) = {
value match {
case JsNull => json.transform(key.json.prune).map(t => json = t)
case _ => json.transform((__.json.update(key.json.put(value)))).map(t => json = t)
}
}
def asJson = json
@ApiModelProperty(value = "User's id", dataType = "String", required = false)
def id_= (v: Option[String]) = setValue((__ \ 'id), Json.toJson(v)) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我的Play-2.5项目配置Swagger.
我按照本教程进行了操作,但仅适用于较旧版本的Play而不使用Play-2.5.随着项目迁移到Play-2.5,我们不得不删除swagger配置.
首先,问题似乎是Play-2.5中的静态控制器与非静态控制器,但我最终证明自己是错的.我正面临这个错误
type ApiHelpController is not a member of package controllers
GET /api-docs controllers.ApiHelpController.getResources
Run Code Online (Sandbox Code Playgroud)
如果任何人知道Play-2.5 for Java的 Swagger配置链接,请指导.
PS:有Scala的教程不适用于java.
java playframework swagger-ui swagger-play2 playframework-2.5
我正在尝试使用Swagger来记录我的REST API.在这个例子之后,我像这样注释REST端点:
case class CreateItemRequest(title: String, body: String)
@ApiOperation(value = "Create a new item", httpMethod = "POST", response = classOf[Item])
@ApiImplicitParams(Array(new ApiImplicitParam(dataType = "CreateItemRequest", paramType = "body", name = "body", required = true, allowMultiple = false, value = "The item object to create")))
def create(
@ApiParam(value = "Hash of the user", required = true)
@QueryParam("userhash") userhash: String
)
Run Code Online (Sandbox Code Playgroud)
我期待得到"模特"之类的 但我只获得字符串"CreateItemRequest"作为数据类型.不是案例类CreateItemRequest的属性.
问候,丹尼尔