根据前两篇的介绍,我们知道.net web api 和 .net core web api在配置方面的不同如下:

1. .net web api的配置是在 App_Stat文件夹里面添加对应的配置类,然后在Global.asax.cs文件里面注册。

2. .net web api的配置是在Startup文件的Config和ConfigService方法里面添加注册。

对于swagger的配置,与上面的类似,我们来看一下如何在.net web api 和 .net core api项目中添加swagger.

1. 添加nuget包。

左边是.net core 需要使用的包:Swashbuckle.AspNetCore

右边是.net需要使用的包: Swashbuckle 和 Swashbuckle.Core

2. 配置使用swagger.

对于.net core web api项目我们在Startup中的ConfigService和Config方法中添加以下代码。下面的代码省去了添加MVC和路由的配置。

public void ConfigureServices(IServiceCollection services)
{
 //添加swagger文档
 services.AddSwaggerGen(
  c => {
   c.SwaggerDoc("v1", new Info
   {
    Title = "Test Api",
    Version = "v1",
    Description = "Swagger学习",
    TermsOfService = "Note",
    Contact = new Contact { Name = "Email", Email = "test@163.com", Url = "https://home.cnblogs.com/u/ZhangDamon" }
   });
  });
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwaggerUI(
c => {
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test Web API");
}); }

对于.net web api项目,当安装完nuget包之后,在App_Start文件夹中会自动生成SwaggerConfig.cs文件。我们删除里面的注释,保留以下代码。

using System.Web.Http;
using WebActivatorEx;
using FreWebApi;
using Swashbuckle.Application;
using Swashbuckle.Swagger;
using System.Collections.Generic;
using System.Web.Http.Description; [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")] namespace FreWebApi
{
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly; GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "FreWebApi");
c.IncludeXmlComments(GetXmlCommentsPath());
//c.OperationFilter<HttpHeaderFilter>(); })
.EnableSwaggerUi(c =>
{
c.InjectJavaScript(thisAssembly, "SwaggerDemo.Scripts.swaggerui.swagger_lang.js");
});
} private static string GetXmlCommentsPath()
{
return string.Format(@"{0}\bin\FreWebApi.xml", System.AppDomain.CurrentDomain.BaseDirectory);
}
}
}

这个时候我们打开运行然后浏览器中输入swagger地址,就可以看到swagger ui界面了。

根据前两篇的介绍,我们知道.net web api 和 .net core web api在配置方面的不同如下:

1. .net web api的配置是在 App_Stat文件夹里面添加对应的配置类,然后在Global.asax.cs文件里面注册。

2. .net web api的配置是在Startup文件的Config和ConfigService方法里面添加注册。

对于swagger的配置,与上面的类似,我们来看一下如何在.net web api 和 .net core api项目中添加swagger.

1. 添加nuget包。

左边是.net core 需要使用的包:Swashbuckle.AspNetCore

右边是.net需要使用的包: Swashbuckle 和 Swashbuckle.Core

2. 配置使用swagger.

对于.net core web api项目我们在Startup中的ConfigService和Config方法中添加以下代码。下面的代码省去了添加MVC和路由的配置。

public void ConfigureServices(IServiceCollection services)
{
 //添加swagger文档
 services.AddSwaggerGen(
  c => {
   c.SwaggerDoc("v1", new Info
   {
    Title = "Test Api",
    Version = "v1",
    Description = "Swagger学习",
    TermsOfService = "Note",
    Contact = new Contact { Name = "Email", Email = "test@163.com", Url = "https://home.cnblogs.com/u/ZhangDamon" }
   });
  });
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseSwaggerUI(
c => {
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test Web API");
}); }

对于.net web api项目,当安装完nuget包之后,在App_Start文件夹中会自动生成SwaggerConfig.cs文件。我们删除里面的注释,保留以下代码。

using System.Web.Http;
using WebActivatorEx;
using FreWebApi;
using Swashbuckle.Application;
using Swashbuckle.Swagger;
using System.Collections.Generic;
using System.Web.Http.Description; [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")] namespace FreWebApi
{
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly; GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "FreWebApi");
c.IncludeXmlComments(GetXmlCommentsPath());
//c.OperationFilter<HttpHeaderFilter>(); })
.EnableSwaggerUi(c =>
{
c.InjectJavaScript(thisAssembly, "SwaggerDemo.Scripts.swaggerui.swagger_lang.js");
});
} private static string GetXmlCommentsPath()
{
return string.Format(@"{0}\bin\FreWebApi.xml", System.AppDomain.CurrentDomain.BaseDirectory);
}
}
}

这个时候我们打开运行然后浏览器中输入swagger地址,就可以看到swagger ui界面了。

下图是.net core web api的swagger页面。

下图是.net api生产的页面。

由上面的图我们可以看到两个swagger除了访问的url不同之外就是.net core的swagger多了一些标签。

这些都是由下面的代码生成的,至于对应关系大家可以自己研究一下。

有的同学可能觉得奇怪,为什么我们这次不需要在Global.asax.cs文件里面注册swagger的配置,我们回顾一下SwaggerConfig的代码,里面下面这有下面这个特性,它可以指定在web api 启动的时候自动注册swagger的配置。

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

3. 注释文档的配置

对于.net 和.net core 来说生产文档注释的配置基本类似,首先我们需要添加xml路径,右击项目->属性->生产,选择输出路径,一般情况下都会有个默认路径不需要修改。

第二步,如果是.net项目我们在SwaggerConfig类里面修改代码如下:

对于.net core项目我们按照以下方式修改代码:

这样我们再次打开swagger就可以看到我们的swagger页面已经可以显示我们添加到接口的注释了。同时如果我们的接口有实体参数也可以显示出来。

web API .net - .net core 对比学习-使用Swagger的更多相关文章

  1. web API .net - .net core 对比学习-依赖注入

    今天我们来看一下 .net web api 和 .net core web api依赖注入机制的差异. 首先我们分别在.net web api 和 .net core web api新建文件夹Serv ...

  2. web API .net - .net core 对比学习-文件目录概述

    个人正在学习.net web Api的相关知识,因此用这一系列博客做一记录. 1. 首先我们分别创建 .net web api 项目和 .net core web api 项目. 2. 我们首先比较一 ...

  3. Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]

    详情请查看http://aehyok.com/Blog/Detail/67.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:ht ...

  4. Asp.Net Web API 2 官网菜鸟学习系列导航

    链接地址: http://www.cnblogs.com/aehyok/p/3446289.html

  5. angular4和asp.net core 2 web api

    angular4和asp.net core 2 web api 这是一篇学习笔记. angular 5 正式版都快出了, 不过主要是性能升级. 我认为angular 4还是很适合企业的, 就像.net ...

  6. [整理]ASP.NET WEB API 2学习

    目录 1 快速入门 1.1实例 1.1.1初识WEB API 2 1.1.2 Action Results 的改变 1.1.3 路由的新增特性 1.1.4 消息管道的变化 1.1.4.1 HttpMe ...

  7. win 10+ iis 10 部署.net core 1.1 web api

    今天上午部署了wcf,部署了好久,一直没有部署好,最后找到了dudu的部署方法,结果中午吃饭的时候成功了,这是链接:http://www.cnblogs.com/dudu/p/3328066.html ...

  8. Advanced Architecture for ASP.NET Core Web API

    转自: https://www.infoq.com/articles/advanced-architecture-aspnet-core ASP.NET Core's new architecture ...

  9. 温故知新,使用ASP.NET Core创建Web API,永远第一次

    ASP.NET Core简介 ASP.NET Core是一个跨平台的高性能开源框架,用于生成启用云且连接Internet的新式应用. 使用ASP.NET Core,您可以: 生成Web应用和服务.物联 ...

随机推荐

  1. Docker快速部署gitlab应用实战

    Gitlab是一个用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础上搭建的web服务,可通过web界面进行访问公开或者私人项目,拥有类似于GIthub类似的功能,能够浏览源代码,可管理 ...

  2. 关于python的深拷贝和浅拷贝

    写类函数的时候出了一个错,原代码写在这里: def Update(self, wm, vm, ts, pos, vn, att): # 上一时刻位置,速度 pos_pre = pos self.pos ...

  3. 城东C位之路!探秘三线楼市板块崛起3大核心基因

    等着咧!伍家篇什么时候出?这就出. 城东C位之路!- 诸葛磊 好几个粉丝已经在催了,诸葛磊决定改变下写作策略,伍家岗篇分版块用小篇幅来写,这样文章不至于太长,否则又是一篇洋洋洒洒上万字的文章,粉丝看着 ...

  4. Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型

    Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型 OxyPlot组件支持26种图表,这些图表按照功能和样式可以分为4大类,分别为线型图表.条型图表.金融图表和其它图表. 线型图表 ...

  5. hive中function函数查询

    1. desc function [函数名] desc function xpath; 查询用法: 2. desc function extended [函数名] desc function exte ...

  6. layui table.reload的bug

    bug1: bug描述:当cols列在reload中有变化时,渲染后部分cols列自动隐藏(并未对这些列设置hide:true) bug版本:2.3.5版本有此bug,今日更新最新版本2.5.5 仍有 ...

  7. 非LODOP的打印其他问题-简短问答

    该文是一些应用软件,或打印机,即使不使用lodop,也可能会常见的问题.一般和操作系统,电脑硬件打印机硬件等有关. 1.错误-正在打印 怎么解决这个是打印机队列的状态,排查下电脑和打印机的连线是否正常 ...

  8. [LeetCode] 110. Balanced Binary Tree 平衡二叉树

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  9. Java之使用IDE

    IDE是集成开发环境:Integrated Development Environment的缩写. 使用IDE的好处在于按,可以把编写代码.组织项目.编译.运行.调试等放到一个环境中运行,能极大地提高 ...

  10. 主机与虚拟机Oracle VM VirtualBox不能拖动复制的解决办法

    先将虚拟机系统关机,然后打开Oracle VM VirtualBox管理器: 第一步: 常规高级里共享粘贴板已经选中双向 第二步: 虚拟机设置-存储-控制器SATA(或IDE)-勾选"使用主 ...