我正在使用 iheartradio/play-swagger lib 生成 swagger.json 到服务器 UI。我无法在 swagger.yml 中设置嵌套变量(信息下的标题)。虽然我可以设置,例如主机变量。
swagger.yml
swagger: "2.0"
info:
description: "API"
version: "1.0.0"
title: "Brand API"
host: "api.radio"
tags:
- name: "brand"
这是 swagger 控制器代码
val authUrl = "brand"
lazy val swagger = Action { request =>
generator.generate().map(_ + ("title" -> JsString(authUrl))).fold(
e => InternalServerError("Couldn't generate swagger."),
s => Ok(s))
}
答案 0 :(得分:1)
在嵌套的 JSON 中添加属性的一种方法是使用 JsObject#deepMerge
。
在您的示例中,替换
generator.generate().map(_ + ("title" -> JsString(authUrl)))
与:
val toMerge = Json.parse(s"""{ "info": { "title": "$authUrl" } }""") // or build it manually
generator.generate().map(_.deepMerge(toMerge))