增加接口文档

添加swagger包

打开程序包管理控制台,然后输入以下代码安装swagger包
Install-Package Swashbuckle.AspNetCore -Version 5.0.0-rc4

安装swagger

通过Nuget包管理器安装swagger

安装完毕以后可以在包中看到Swashbuckle.AspNetCore5.0

设置API输出XML文档文件

双击Properties,在打开的页面选择生成,按照红框内容配置xml文件输出

注册Swagger服务

打开XXX.api中Startup.cs文件,在ConfigureServices中注册Swagger服务

 // 用来向容器中注册服务,注册好的服务可以在其他地方进行调用        public void ConfigureServices(IServiceCollection services)        {            //数据库连接字符串            string conn = Configuration.GetConnectionString("xxxDB");            Models.XXXEntities.xxxContext.ConStr = conn;                        //注册swagger服务,定义1个或者多个swagger文档            services.AddSwaggerGen(s=> {                //设置swagger文档相关信息                s.SwaggerDoc("v1", new OpenApiInfo                {                    Title = "xxxWebApi文档",                    Description = "这是一个简单的NetCore WebApi项目",                    Version = "v1.0"                });                            //获取xml注释文件的目录                var xmlFile = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";                var xmlPath = System.IO.Path.Combine(AppContext.BaseDirectory, xmlFile);                // 启用xml注释                s.IncludeXmlComments(xmlPath);            });            services.AddControllers();            services.AddRouting();            //services.AddDbContext(options =>            //{            //    options.UseSqlServer(conn);            //});        }

SwaggerDoc是配置Swagger文档相关属性的地方,比如名称、描述、版本等
IncludeXmlComments 设置第二步中xml文档文件路径

打开XXX.api中Startup.cs文件,在Configure中启用Swagger服务

 // 用来配置中间件管道,即如何响应http请求.        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            if (env.IsDevelopment())            {                app.UseDeveloperExceptionPage();            }            else            {                app.UseExceptionHandler("api/Error");            }            app.UseRouting();            app.UseAuthorization();            //启用swagger中间件            app.UseSwagger(opt=> {                //opt.RouteTemplate = "api/{controller=Home}/{action=Index}/{id?}";            });            //启用SwaggerUI中间件(htlm css js等),定义swagger json 入口            app.UseSwaggerUI(s => {                                s.SwaggerEndpoint("/swagger/v1/swagger.json", "xxxWebapi文档v1");                //要在应用的根 (http://localhost:/) 处提供 Swagger UI,请将 RoutePrefix 属性设置为空字符串:                //s.RoutePrefix = string.Empty;            });            app.UseEndpoints(endpoints =>            {                //endpoints.MapControllerRoute(                //     name: "default",                //     pattern: "api/{controller}/{action}/{id?}");                endpoints.MapControllers();            });        }

如果想通过http://xxxx.com:的方式访问Swagger文档则添加RoutePrefix = string.Empty;即可

解决No operations defined in spec!问题

一般来说按照上面的方式配置好就可以访问Swagger文档了,但是最后还是出了“No operations defined in spec!”的问题

问题原因:在前面我们将路由配置统一从Controller中去掉然后endpoints.MapControllerRoute设置了路由模版,由于Swagger无法在Controller中找到[Route("api/[controller]/[action]")]和[ApiController]从而触发了“No operations defined in spec!”的问题。下图是我们注释的内容和增加的内容

解决方案
.将Startup.cs中Configure里的路由模版注释掉,改成endpoints.MapControllers();然后在Controller里添加路由模版,或者将Startup.cs中Configure里的路由模版注释掉,改成endpoints.MapControllers();,增加BaseController.cs并继承ControllerBase,然后在BaseController设置路由模版,让Controller继承BaseController

BaseController.cs代码

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;namespace XXX.api{    ///     /// 自定义路由模版    /// 用于解决swagger文档No operations defined in spec!问题    ///     [Route("api/[controller]/[action]")]    [ApiController]    public class BaseController : ControllerBase    {    }}

解决CS1591警告

配置完Swagger以后出现了一个令人不爽的警告

双击Properties

找到生成,定位到错误和警告

新增取消显示警告1591

读取appsettings.json配置类

在appsettings.json文件中增加一个存放配置信息的参数AppSettings

{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft": "Warning",      "Microsoft.Hosting.Lifetime": "Information"    }  },  "AllowedHosts": "*",  //接口配置参数设置  "AppSettings": {    //数据库连接字符串    "xxxDB": "Server=127.0.0.1;User Id=用户id;Password=密码;Database=数据库名称;",    //接口是否需要签名    "IsSign": "true",    //16位MD5签名key    "Md5Key": "5ShiCeShiAAAAAAA"  }}

增加AppSettings.cs操作类

using Microsoft.Extensions.Configuration;using System;using System.Collections.Generic;using System.Text;namespace XXX.Common{    public class AppSettings    {        private static IConfigurationSection appSection = null;        ///         /// 获取配置文件        ///         ///         ///         public static string GetAppSeting(string key)        {            if (appSection.GetSection(key)!=null)            {                return appSection.GetSection(key).Value;            }            else            {                return "";            }        }        ///         /// 设置配置文件        ///         ///         public static void SetAppSetting(IConfigurationSection section)        {            appSection = section;        }    }}

修改Startup.cs

在Startup.cs中的Configure方法中获取appsettings.json值,代码如下

//从appsettings.json获取配置文件            Common.AppSettings.SetAppSetting(Configuration.GetSection("AppSettings"));

使用

通过Common.AppSettings.GetAppSeting("配置文件名")读取配置文件
示例:
从配置文件中读取连接字符串
打开XXXContext.cs在OnConfiguring方法中设置数据库连接字符串。

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)        {            if (!optionsBuilder.IsConfigured)            {                //通过配置文件操作类读取数据库连接字符串                optionsBuilder.UseSqlServer(Common.AppSettings.GetAppSeting("xxxDB"));            }        }

ios中amplify配置configure_Asp.netCore3.0 简单的webapi接口 (中)相关推荐

  1. java 缓存接口,java项目中,针对缓存问题的处理方式【接口中的处理方式】

    1.在service包中,分别建立了关于缓存的一系列的接口.类等,封装到一个工具包中: 临时缓存的接口(代码部分): packagecom.tools;importjava.util.Date;pub ...

  2. ios中amplify配置configure_Nginx源码编译安装及配置文件初步学习

    通过源码编译安装. nginx.org #官网地址 # 安装过程 wget http://nginx.org/download/nginx-1.18.0.tar.gz -P /usr/src # ta ...

  3. java中spring的级别_java – 在简单的示例项目中更改Spring框架日志级别?

    这是Spring Boot的工作,它通过slf4j处理日志路由jul,jcl和log4j,并通过slf4j使用Logback,正如您可以通过可区分的缩写命名空间类名称来判断的. 通过直接在pom文件上 ...

  4. 解决在Filter中读取Request中的流后,后续controller或restful接口中无法获取流的问题

    首先我们来描述一下在开发中遇到的问题,场景如下: 比如我们要拦截所有请求,获取请求中的某个参数,进行相应的逻辑处理:比如我要获取所有请求中的公共参数 token,clientVersion等等:这个时 ...

  5. Arcgis javascript那些事儿(二十)——dojo中djconfig配置、dojo与requirejs项目冲突

    一.引言 由于项目一部分使用requirejs另一部分地图是用dojo开发(因为arcgis javascript使用的dojo),两个要和到一起,所以要求研究下如何把两者和到一起,花了两天时间看了看 ...

  6. 计算机网络实验:CISCO IOS 路由器基本配置

    目录 CCNA6安装过程: 使用界面: 实验:静态路由配置 实验:动态路由的配置 实验:配置VLAN 思考题 实验任务: 5.2 实验要求 使用 Router eSIM v1.1 模拟器 来模拟路由器 ...

  7. Spring 4.x框架中的新特性---Spring4.0框架的新功能和改善

    2004年Spring框架首次发布,然后陆续发布了一些重要的版本:Spring2.0提供XML命名空间和AspectJ的支持:Spring2.5包含了注释驱动配置:Spring3.0在框架基础代码中引 ...

  8. SpringBoot - Spring Boot 中的配置体系Profile全面解读

    文章目录 Pre Spring Boot 中的配置体系 配置文件与 Profile 主 application.properties 中指定激活的Profile Profile 配置信息只保存在一个文 ...

  9. 五、深入理解Mybatis中的参数parameterType (传递一个简单参数,传递多个参数:@Param、使用自定义对象、按位置、使用Map)

    1.1 parameterType parameterType: 接口中方法参数的类型, 类型的完全限定名或别名.这个属性是可选的,因为 MyBatis可以推断出具体传入语句的参数,默认值为未设置(u ...

最新文章

  1. 安装sql 2005 闪退 连接到服务器失败。错误:0x80070424
  2. 麻烦的.text字段
  3. python debug
  4. Nginx源码阅读(ngx_http_process_request_line)
  5. [渝粤教育] 潍坊职业学院 化工安全技术 参考 资料
  6. ~~朴素版prim算法
  7. 8.看板方法---建立交付节奏
  8. Python终端美化库Rich
  9. AQS抽象队列同步器
  10. 输入某年某月某日java_java输入某年某月某日
  11. C语言课程设计(服装管理系统详解)
  12. ckplayer播放器自动播放下一集以及点击下一集
  13. 洛谷P2738 [USACO4.1]篱笆回路Fence Loops(Floyed求最小环)
  14. WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)
  15. 视频教程-大型ERP实战项目教程-Java
  16. DVB-S2中的LDPC
  17. arcgis直方图导出地图_ArcGIS教程地图导出花式教你如何选择
  18. ESLint: Unexpected token } in JSON at position 3792. Please see the ‘ESLint‘ output channel for deta
  19. Win8怎么加快桌面图标刷新速度?提高图标刷新速度的方法解析
  20. 数据分析和用户增长的思维导图

热门文章

  1. TensorFlow2.0:误差计算
  2. CDH 5.15.2 离线安装
  3. Linux 获取grep前后几行
  4. python3下载流程_CentOS系统升级Python到Python3.3步骤
  5. oracle 清除参数,IMp回去的时候要把原来的表的记录清空吗?没有什么参数可以省略这个吗...
  6. mysql 种子表_mysql之3种子查询
  7. python中again函数怎么用_Python中的偏函数怎么用?
  8. Docker容器镜像删除不掉解决办法?
  9. java c 简单例子_通过一个简单的例子来理解C语言中的LAPACK调用
  10. 泉州海事学校计算机,泉州海事学校寝室图片、校园环境好吗?