加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何在swagger中为.Net Core Web API设置基本路径属

发布时间:2020-12-16 07:20:44 所属栏目:asp.Net 来源:网络整理
导读:我在ASP.Net Core(版本1.1.2)中构建了一个Web API,并使用Swashbuckle.AspNetCore生成swagger定义. 下面是自动生成的swagger定义的一部分.我想改变路径,所以它不包括/ api / ApiName,但它将包含在basePath中,现在是/ { "swagger": "2.0","info": { "version":
我在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]")]

并将其添加到Startup.cs.但是这没用.有没有人知道如何解决这个问题?

解决方法

最后我用它来修复它:

您可以设置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;
            });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读