我在ASP.Net Core(版本1.1.2)中构建了一个Web API,并使用Swashbuckle.AspNetCore生成swagger定义 .
下面是自动生成的swagger定义的一部分 . 我想更改路径,所以它不包括 /api/ApiName 但它将包含在 basePath 现在 /
{
"swagger": "2.0",
"info": {
"version": "v1",
"title": "ApiName.V1"
},
"host": "ApiUrl",
"basePath": "/api/ApiName",
"paths": {
"/": {
"get": {
"tags": [
"ApiName"
],
.........
所以我想得到的是:
{
"swagger": "2.0",
"info": {
"version": "v1",
"title": "ApiName.V1"
},
"host": "ApiUrl",
"basePath": "/",
"paths": {
"/api/ApiName": {
"get": {
"tags": [
"ApiName"
],
.........
我们有一些其他的API没有用.Net Core编写,并且它通过添加默认路由修复了同样的问题 . 我试图通过删除API控制器顶部的路由在.Net核心上做同样的事情
[Route("api/[Controller]")]
并将其添加到Startup.cs . 但是这没用 . 有没有人知道如何解决这个问题?
2 回答
最后我用它来修复它:
您可以设置PreSerializeFilters以添加BasePath并编辑路径 . 以为会有更优雅的方式,但这有效 .
使用 IDocumentFilter 可以修改结果swagger定义 .
我在这里有一些例子:
https://github.com/heldersepu/SwashbuckleTest/blob/master/Swagger_Test/App_Start/SwaggerConfig.cs#L285