• 如何使用webapi集成swagger


      现在B/S开发中,前后端分离无疑已经成为一种新的时尚,但是如何把后端开发的接口更好的提供给前段开发呢?还用接口文档?low了吧。不仅要花时间开发接口,还得花时间写文档,白花花的时间不久浪费了吗。如果接口需要调整,还得改文档,这效率不用说了,肯定够呛。今儿思明和大家分享一篇可视化webapi接口开发,就是去集成swagger。

      先来简单介绍一下:Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

         下面介绍一下具体实现过程:

    1、新建一个项目aps.net web 应用程序

    2、选择 empty-->核心引用选择 MVC和web api

    3、选择新建的项目右击,在菜单中选择NuGet程序包 左侧选择联机,右侧输入框输入swagger

    选择其中的 Swashbuckle 和Swagger UI for .NET两个安装

    4、右击项目选择菜单属性 --> 选择生成 --> 选择输出xml文档文件,并输入不带多余.的文件名

    5、把刚刚的文件名配置到 文件夹app_start中的 SwaggerConfig.cs 如下:

    c.IncludeXmlComments(string.Format("{0}/bin/SelfSwaggerApi.XML", System.AppDomain.CurrentDomain.BaseDirectory));
    

     6、删除多余无用的项

    7、在文件夹Controllers中新建一个 Web API 控制器类

    8、直接运行。http://localhost:16650/swagger/ui/index 结果如下:

    9、有些人不想直接运行vs就可以自动跳转到 http://localhost:16650/swagger/ui/index 。也是可以的;如下:

    在控制器中新增一个控制器 HomeController

    using System.Web.Mvc;
    
    namespace SelfSwaggerApi.Controllers
    {
        public class HomeController : Controller
        {
            /// <summary>
            /// swagger 首页
            /// </summary>
            /// <returns></returns>
            public ActionResult Index()
            {
                return Redirect("/Swagger/ui/index");
            }
        }
    }
    

      然后直接运行。。就是见证奇迹的时刻。

    备注:常见问题

    未能加载文件或程序集“System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个

    原因分析:程序所依赖的dll 和实际引用的dll不相符,可以用修改配置文件web.config的方式实现兼容

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Http.WebHost" publicKeyToken="31BF3856AD364E35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Data" publicKeyToken="b77a5c561934e089" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    

      齐活。码字不容易,转载请备注出处,博客园思明奉上

  • 相关阅读:
    今天早上打算去菜市场看看是否开张
    昨天晚上雨岳阳通话后,晚上睡着肚子咕咕叫
    已经一周没有开锅了
    今天早上6:00起来,每天晚上回来6点多已经天黑
    其实值班也是一个说法
    感觉每天虽然没有做什么,但是就是觉得睡不够
    现在进入秋季,上海也是在20度左右
    mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句
    java解析xml的几种方式
    myeclipse安装svn插件的多种方式
  • 原文地址:https://www.cnblogs.com/highest/p/8276446.html
Copyright © 2020-2023  润新知