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

目录
相关文章
|
23天前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
157 6
|
11月前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
273 5
|
7月前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
377 2
|
7月前
|
人工智能 运维 安全
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
184 4
|
8月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
8月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
11月前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
243 1
|
11月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
298 3
|
1月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
182 4
|
5月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!

热门文章

最新文章