我有API文档的Swagger UI
,我使用与官方规范中相同的方法来访问它,我使用下一个URL:
http://localhost:9000/docs/swagger-ui/index.html?url=/assets/swagger.json
但我想改用http://localhost:9000/docs/
。我不想用WS
来委派,我想在routes
中使用单行,像这样:
GET /docs controllers.Assets.at(path:String="/public/lib/swagger-ui", file:String="index.html?url=/assets/swagger.json")
或
GET /docs controllers.Assets.at(path:String="/public/lib/swagger-ui", file:String="index.html")
和http://localhost:9000/docs?url=/assets/swagger.json
我应该改变什么才能工作?
如何在没有 Play-Swagger 的情况下解决它:
- 在项目中创建目录公共\招摇;
- 从 https://github.com/swagger-api/swagger-ui/tree/master/dist 下载所有文件并将它们复制到公共\招摇;
- 将你的 swagger.json(这是规范,对吧?)复制到 public\specification;
- 添加到路由文件的下一行:
获取/文档
控制器。Assets.versioned(path="/public/specification", file: Asset = "swagger.json")
缩短 URL /docs/swagger-ui/index.html?url=/assets/swagger.json
的路由文件index.html
因为 URL 是由swagger-ui plugin
to public
目录生成的,并且需要访问附近的文件(如 js 和 css 文件)。 Play swagger-ui
使用 javascript
通过 URL 参数获取基于json
路由的描述,以进一步将此文档解析为 swagger-ui,在您的情况下,它是/assets/swagger.json
端点。
我尝试使映射 swagger 的 index.html
文件,因此直接传递json
位置,如下所示URL parameter
:
GET /swagger-ui controllers.Assets.at(path = "/public/lib/swagger-ui", file = "index.html")
Play 无法呈现此页面,并且找不到 CSS。我将虚拟映射附加到 swagger 默认目录中的每个文件/public/lib/swagger-ui
:
GET /*file controllers.Assets.at(path = "/public/lib/swagger-ui", file)
即使在那之后,Play也无法正确渲染index.html
。