Swagger的 ASP.NET Core Web API 帮助页

简介: 使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战。 Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题。 它具有诸如交互式文档、客户端 SDK 生成和 API 可发现性等优点。

使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战。 Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题。 它具有诸如交互式文档、客户端 SDK 生成和 API 可发现性等优点。



Swashbuckle 有三个主要组成部分:


1.      Swashbuckle.AspNetCore.Swagger:将 SwaggerDocument 对象公开为 JSON 终结点的 Swagger 对象模型和中间件。


2.      Swashbuckle.AspNetCore.SwaggerGen:从路由、控制器和模型直接生成 SwaggerDocument 对象的 Swagger 生成器。 它通常与 Swagger 终结点中间件结合,以自动公开 Swagger JSON。


3.      Swashbuckle.AspNetCore.SwaggerUI:Swagger UI 工具的嵌入式版本。 它解释 Swagger JSON 以构建描述 Web API 功能的可自定义的丰富体验。 它包括针对公共方法的内置测试工具。添加Swashbuckle.AspNetCore的方法

1.从“程序包管理器控制台”窗口:



 转到“视图” > “其他窗口” > “程序包管理器控制台”

·       导航到包含.csproj 文件的目录

·       请执行以下命令:



aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9meDFseDlpY2hPTmIySFdrRW45emI3QnA2Ym15a3RTZU10a3JDdXFBUW55RWxzTlFLOWljV2NidVZYSWliSldPNVprbmtrNG1Da1dpY3lCbmliZGpOUHZ4cGdnLzY0MA.png


aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9meDFseDlpY2hPTmIySFdrRW45emI3QnA2Ym15a3RTZU04bWljSkNrcDZBcGFGS1dzaWIxS1RBYlRzOGljUHhQeWtMTjdFaFZIVnVqWWdIQmlhaEhacTNmZGtnLzY0MA.png


Install-Package Swashbuckle.AspNetCore-Version 5.0.0-rc4


2.从“管理 NuGet 程序包”对话框中:


     右键单击“解决方案资源管理器” > “管理 NuGet 包”中的项目


·       将“包源”设置为“nuget.org”


·       确保启用“包括预发行版”选项


·       在搜索框中输入“Swashbuckle.AspNetCore”


·       从“浏览”选项卡中选择最新的“Swashbuckle.AspNetCore”包,然后单击“安装”


添加并配置 Swagger 中间件

将 Swagger 生成器添加到 Startup.ConfigureServices 方法中的服务集合中:

public void ConfigureServices(IServiceCollection services)
  {
      services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
      services.AddSwaggerGen(c =>
      {
          c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
      });
  }


Startup.Configure 方法中,启用中间件为生成的 JSON 文档和 Swagger UI 提供服务

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("./swagger/v1/swagger.json", "My API V1");
                  });
    app.UseMvc();
}


启动应用,并导航到 http://localhost:/swagger/v1/swagger.json。 生成的描述终结点的文档显示在 Swagger 规范 (swagger.json) 中。


可在 http://localhost:/swagger 找到 Swagger UI。 通过 Swagger UI 浏览 API,并将其合并其他计划中。

要在应用的根(http://localhost:/) 处提供 Swagger UI,请将RoutePrefix 属性设置为空字符串:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
      if (env.IsDevelopment())
      {
          app.UseDeveloperExceptionPage();
      }
      app.UseSwagger();
      app.UseSwaggerUI(c =>
      {
          c.SwaggerEndpoint("./swagger/v1/swagger.json", "My API V1");
          c.RoutePrefix = string.Empty;
      });
      app.UseMvc();
  }


并将launchSettings.json文件中的    "launchUrl": "api/values"注释掉



{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:52655",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      //"launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "appDemo": {
      "commandName": "Project",
      "launchBrowser": true,
      //"launchUrl": "swagger",
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}


自定义和扩展

Swagger 提供了为对象模型进行归档和自定义 UI 以匹配你的主题的选项。


API 信息和说明

传递给 AddSwaggerGen 方法的配置操作会添加诸如作者、许可证和说明的信息:

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Version = "v1",
                    Title = "ToDo API",
                    Description = "A simple example ASP.NET Core Web API",
                    TermsOfService = "https://blog.csdn.net/zhoubangbang1",
                    Contact = new Contact
                    {
                        Name = "zbb",
                        Email = string.Empty,
                        Url = "https://blog.csdn.net/zhoubangbang1",
                    },
                    License = new License
                    {
                        Name = "Use under LICX",
                        Url = "https://blog.csdn.net/zhoubangbang1",
                    }
                });
            });
        }


运行结果:



aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9meDFseDlpY2hPTmIySFdrRW45emI3QnA2Ym15a3RTZU1kRXBCYXdMRUVjTzdNemdVRzBtQk41RVl4T0lBS3BIZU93ZkdXYlljMDNmaWNzTk5QbXJTQWpRLzY0MA.png

为接口添加注释


将 Swagger 配置为使用按照上述说明生成的 XML 文件。 对于Linux 或非 Windows 操作系统,文件名和路径区分大小写。 例如,“TodoApi.XML”文件在 Windows 上有效,但在 CentOS 上无效。


右键项目名称=>属性=>生成,勾选“输出”下面的“xml文档文件”,系统会默认生成一个,当然老规矩,你也可以自己起一个名字:


这里我用的是相对路径,可以直接生成到 api 层的 bin文件夹下


aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9meDFseDlpY2hPTmIySFdrRW45emI3QnA2Ym15a3RTZU1aaWJXU1hrZE42ZVFYaE1xVmF1aFJkM2c2Rzl2ZEgzR1B0WnB6UmliVXo2Q0NDU2h2UkppYndHZUEvNjQw.png

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info
        {
            Version = "v1",
            Title = "ToDo API",
            Description = "A simple example ASP.NET Core Web API",
            TermsOfService = "https://blog.csdn.net/zhoubangbang1",
            Contact = new Contact
            {
                Name = "zbb",
                Email = string.Empty,
                Url = "https://blog.csdn.net/zhoubangbang1",
            },
            License = new License
            {
                Name = "Use under LICX",
                Url = "https://blog.csdn.net/zhoubangbang1",
            }
        });
        //就是这里
        var basePath = PlatformServices.Default.Application.ApplicationBasePath;
        var xmlPath = Path.Combine(basePath, " appDemo.xml");//这个就是刚刚配置的xml文件名
        c.IncludeXmlComments(xmlPath, true);//默认的第二个参数是false,这个是controller的注释,记得修改
    });
}


此时,先别忙着运行项目,会出现很多的警告

这是因为swagger把一些接口方法都通过xml文件配置了。

如果你不想每一个方法都这么加注释,可以这么配置(对当前项目进行配置,可以忽略警告,记得在后边加上分号 ;1591):

 

最后的运行结果:



aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9meDFseDlpY2hPTmIySFdrRW45emI3QnA2Ym15a3RTZU1iZ01qeWtybVpUYTN6cnhvWnY0Smg0dkxiZzlGUFNlenFZTDAxdHRpYnRINEhEeTZmb2JHWXVnLzY0MA.png

目录
相关文章
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
10月前
|
XML JSON API
如何从 Swagger 导出 API 文档
Swagger 使这项任务相对简单,允许开发者以各种格式(如 JSON 和 YAML)导出 API 文档。在这篇博文中,我们将详细探讨如何从 Swagger 导出 API 文档。
如何从 Swagger 导出 API 文档
|
人工智能 搜索推荐 API
自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator
在完成文本识别和人脸检测项目后,我深入学习了HarmonyOS Next API 13中的Core Vision Face Comparator API,开发了一个简单的人脸比对工具。该API能进行高精度人脸比对并给出相似度评分,应用场景广泛,如照片分类、身份认证、个性化服务等。通过初始化服务、加载图片、实现比对功能和构建用户界面,最终实现了可靠的人脸比对功能。未来计划将此技术应用于更复杂的场景,如照片管理和个性化服务,并探索与其他AI能力的结合。如果你也对人脸比对感兴趣,不妨从简单的比对功能开始,逐步实现自己的创意!
399 61
|
开发框架 .NET 程序员
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
596 4
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
|
人工智能 自然语言处理 文字识别
自学记录鸿蒙API 13:实现智能文本识别Core Vision Text Recognition
在完成语音助手项目后,我尝试了HarmonyOS Next API 13中的Core Vision Text Recognition API,体验其强大的文本识别功能。该API支持多语言高精度识别,能快速将图像中的文本提取为结构化信息,适用于文档扫描、票据管理和实时翻译等场景。通过权限配置、初始化服务、实现识别功能和构建用户界面,我完成了文本识别应用的开发,并探索了性能优化与功能扩展。鸿蒙生态的强大支持让开发者能更便捷地实现复杂功能。未来计划将此技术应用于实际项目,如票据管理或实时翻译工具。如果你也对文本识别感兴趣,不妨一起探索!
293 11
|
人工智能 监控 安全
自学记录鸿蒙 API 13:骨骼点检测应用Core Vision Skeleton Detection
骨骼点检测技术能够从图片中识别出人体的关键骨骼点位置,如头部、肩部、手肘等,广泛应用于运动健身指导、游戏交互、医疗辅助、安全监控等领域。我决定深入学习HarmonyOS Next API 13中的Skeleton Detection API,并开发一个简单的骨骼点检测应用。通过理解API核心功能、项目初始化与配置、实现检测功能、构建用户界面,以及性能优化和功能扩展,逐步实现这一技术的应用。未来计划将其应用于健身指导和智能监控领域,探索与其他AI能力的结合,开发更智能的解决方案。如果你也对骨骼点检测感兴趣,不妨一起进步!
475 9
|
人工智能 监控 安全
自学记录鸿蒙 API 13:实现人脸检测 Core Vision Face Detector
本文介绍了基于HarmonyOS Next API 13中的Core Vision Face Detector API实现人脸检测小应用的过程。通过研究发现,该API不仅支持人脸检测框的定位,还能识别关键点(如眼睛、鼻子和嘴角位置)及人脸姿态信息。文章详细记录了开发历程,包括项目初始化、权限配置、图像加载与人脸检测、用户界面设计,以及性能优化和功能扩展的思路。应用场景涵盖身份验证、照片管理和实时交互等。未来计划将技术应用于智能照片管理工具,提供更高效的照片分类体验。欢迎对人脸检测技术感兴趣的读者一起探讨和进步。
532 7
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
1101 4
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
255 3