我在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","basePath": "/","paths": { "/api/ApiName": { "get": { "tags": [ "ApiName" ],.........
我们有一些其他的API没有用.Net Core编写,并且它通过添加默认路由修复了同样的问题.我试图通过删除API控制器顶部的路由在.Net核心上做同样的事情
[Route("api/[Controller]")]
解决方法
最后我用它来修复它:
您可以设置PreSerializefilters以添加BasePath并编辑路径.以为会有更优雅的方式,但这有效.
var basepath = "/api/AppStatus"; c.PreSerializefilters.Add((swaggerDoc,httpReq) => swaggerDoc.BasePath = basepath); c.PreSerializefilters.Add((swaggerDoc,httpReq) => { IDictionary<string,PathItem> paths = new Dictionary<string,PathItem>(); foreach (var path in swaggerDoc.Paths) { paths.Add(path.Key.Replace(basepath,"/"),path.Value); } swaggerDoc.Paths = paths; });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。