6
我能夠設置揚鞭與播放,並嘗試揚鞭-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))
def id = json as (__ \ 'id).readNullable[String]
@ApiModelProperty(value = "User's email address", dataType = "String", required = true)
def email = json as (__ \ 'email).read[String]
def email_= (v: String) = setValue((__ \ 'email), Json.toJson(v))
@ApiModelProperty(value = "User's firstName", dataType = "String", required = true)
def firstName = json as (__ \ 'firstName).read[String]
def firatName_= (v: String) = setValue((__ \ 'firstName), Json.toJson(v))
...
}
object User {
def apply(
id: Option[String],
email: String,
firstName: String,
): JsResult[User] = apply(Json.obj(
"id" -> id,
"email" -> email,
"firstName" -> firstName,
...
))
}
我的模型類的內部表示是JSON ...然後我只需要提供getter和setter讀取/修改內部JSON –這解決方案讓我能夠非常快速地處理JSON,並且可以將該對象原樣傳遞給MongoDB。
的問題是,揚鞭上面的類生成的模式是這樣的:
User {
json(JsValue),
id(String): User's id,
email(String): User's email,
firstName(String): User's first name,
...
}
如何防止揚鞭自投入json
模型?