webapi 集成swagger
参考资料:Stack Overflow
我自己写的demo:SwaggerDemoApi
在已有的webapi项目或者创建webapi项目中,打开nuget管理器
搜索:swagger
安装截图中的插件到你的webapi项目中 ,安装完成后,项目根目录下也可能会出现SwaggerNet.cs文件,把这个文件删除掉即可。

这个插件是自动安装的,依赖于Swagger.Net.UI

安装完成之后,发现项目根目录--App_Start目录下回产生两个文件

打开SwaggerNet.cs文件,把我截图中的代码注释掉,不然会报错,报错信息:程序集“Swagger.Net, Version=0.5.1.0, Culture=neutral, PublicKeyToken=null”中的类型“Swagger.Net.XmlCommentDocumentationProvider”的方法“GetDocumentation”没有实现。

把图中代码注释掉,就没有报错了。
运行起来后,在地址栏后加上/swagger,就可以自动跳转到对应的页面了。

集成到项目中报错:Not supported by Swagger 2.0: Multiple operations with path 'api/Blob' and method 'POST'. See the config setting - \"ResolveConflictingActions\" for a potential workaround
参考资料:Not supported by Swagger 2.0: Multiple operations with path
webapi 配置swagger出现问题:not supported by swagger 2.0
在代码
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{ ...
里面加上一句:
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.ToList().First());
或者
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
哪个不报错就用哪个,自己看情况。加上之后就不报这个错误了,就成功的运行出来了。
2019.05.24 补充:
如何生成注释文档?参考资料:代码注释生成
2020.03.23 补充:
如何添加header验证?
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.OperationFilter<HttpHeaderFilter>();
}
public class HttpHeaderFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null)
operation.parameters = new List<Parameter>();
var filterPipeline = apiDescription.ActionDescriptor.GetFilterPipeline(); //判断是否添加权限过滤器
var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Instance).Any(filter => filter is IAuthorizationFilter); //判断是否允许匿名方法
var allowAnonymous = apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any();
if (isAuthorized && !allowAnonymous)
{
operation.parameters.Add(new Parameter { name = "Authorization", @in = "header", description = "Token", required = true, type = "string" });
}
}
}
webapi 集成swagger的更多相关文章
- ASP.NET WebAPI 集成 Swagger 启用 OAuth 2.0 配置问题
在 ASP.NET WebAPI 集成 Swagger 后,由于接口使用了 IdentityServer 做的认证,调试起来很不方便:看了下 Swashbuckle 的文档 ,是支持 OAuth2.0 ...
- WebApi 集成 Swagger
1. Swagger(俗称:丝袜哥)是什么东西? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同 ...
- 如何使用webapi集成swagger
现在B/S开发中,前后端分离无疑已经成为一种新的时尚,但是如何把后端开发的接口更好的提供给前段开发呢?还用接口文档?low了吧.不仅要花时间开发接口,还得花时间写文档,白花花的时间不久浪费了吗.如果接 ...
- Katana的WebAPI集成Swagger 解决方案
这位大哥写的博客很清楚了,我就不重复了. http://www.cnblogs.com/caodaiming/p/4156476.html 错误解决 http://blog.csdn.net/gold ...
- WebApi集成Swagger
1.新建一个WebApi空项目 2.新建一个Person实体类: public class Person { public int ID { get; set; } public string Use ...
- netcore3.0 webapi集成Swagger 5.0
在项目中引用Swashbuckle.AspNetCore和Swashbuckle.AspNetCore.Filters两个dll,在Startup中的ConfigureServices相关配置代码如下 ...
- netcore3.0 webapi集成Swagger 5.0,Swagger使用
Swagger使用 1.描述 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务. 作用: 1.接口的文档在线自动生成. 2.功能测试 本文转自 ...
- Web Api集成Swagger
WebApi集成Swagger 1.新建一个WebApi空项目 2.新建一个Person实体类: public class Person { public int ID { get; set; } p ...
- 在WebApi中 集成 Swagger
1. Swagger(俗称:丝袜哥)是什么东西? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同 ...
随机推荐
- java基础(26):Thread、线程创建、线程池
1. 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并 ...
- mssql下调用dll
1.新建类库,里面写入方法,类库里必须样静态,防止实例化 2.将dll存放到文件夹里 3.在sql中运行 EXEC sp_configure 'clr enabled' , '1'; --0代表不允许 ...
- chrome调试安卓机出现“HTTP/1.1 404 Not Found ”错误
chrome调试安卓机的时候打开的调试页面会显示 “HTTP/1.1 404 Not Found ”错误 解决办法: 开启电脑vpn,全局模式即可解决.
- [b0020] python 归纳 (六)_模块变量作用域
test_module2.py: # -*- coding: utf-8 -*-"""测试 模块变量的作用域 总结:1 其他模块的变量,在当前模块的任何地方,包括函数都可 ...
- [Linux]gocron定时任务平台的部署
采用二进制文件的方式部署非常简单,因为go已经把源码打包成了可执行文件,下载下来直接运行就可以了,不需要自己去编译和配置依赖 下载执行文件的地址是:https://github.com/ouqiang ...
- CodeForces - 1248D1 (思维+暴力)
题意 有一个括号序列,你可以选择两个位置i,j(i可以等于j),进行交换.使得最后的循环位置(i的数目)最大. 循环位置:i(0<=i<len),将前i个字符移到最后,得到的新序列是合法的 ...
- 1. Vue - ES6
一.ES6部分知识点 1. 变量声明 <!-- var声明变量,导致变量提升 --> var name = 'ruanyifeng' function func(){ console.lo ...
- eclipse创建java项目
工欲善其事必先利其器,记录一下eclipse怎么创建java项目 0x01:选择工作空间 打开eclipse出现的下面第一个界面,选择java project的空座区间,简单的说就是把你创建的java ...
- day82_10_31celery的使用
1.缓存 当一些数据需要固定地且频繁访问数据库时,需要使用到接口缓存. 以轮播图为例,每个用户都会访问首页,首页的轮播图长时间不会改变,所以可以使用cache,将固定数据保存到缓存中(redis),第 ...
- CF707D Persistent Bookcase
CF707D Persistent Bookcase 洛谷评测传送门 题目描述 Recently in school Alina has learned what are the persistent ...