zoukankan      html  css  js  c++  java
  • c# webapi swagger

    如何配置swagger?

    在使用项目中,我们希望去查看我们的webapi的测试,那么我们是需要去有一个集成的测试的。

    步骤

    1.在nutget管理包中下载swagger包。

    2.这样会在App_start 文件夹中出现swaggerconfig.cs 和swaggerNet.cs,
    这个时候就需要配置的时候了。

    3.取消下面的注释(swaggerconfig.cs)

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

    当然我们为了代码的模块化,可以封装到一个方法中:

    private static string GetXmlCommentsPath()
    {
        return $@"{System.AppDomain.CurrentDomain.BaseDirectory}inGetDocumentation.XML";
    }
    

    好吧,ok,我们知道了这个配置了。

    那么我们需要再bin目录下创建一个xml,推荐是项目名.xml.

    4.那么接下来就是swaggerNet.cs配置.

    using System;
    using System.IO;
    using System.Web;
    using System.Web.Http;
    using System.Web.Http.Description;
    using System.Web.Http.Dispatcher;
    using System.Web.Routing;
    using Swagger.Net;
    
    [assembly: WebActivator.PreApplicationStartMethod(typeof(ThinkingSpace.App_Start.SwaggerNet), "PreStart")]
    [assembly: WebActivator.PostApplicationStartMethod(typeof(ThinkingSpace.App_Start.SwaggerNet), "PostStart")]
    namespace ThinkingSpace.App_Start 
    {
        public static class SwaggerNet 
        {
            public static void PreStart() 
            {
                RouteTable.Routes.MapHttpRoute(
                    name: "SwaggerApi",
                    routeTemplate: "api/docs/{controller}",
                    defaults: new { swagger = true }
                );            
            }
            
            public static void PostStart() 
            {
                var config = GlobalConfiguration.Configuration;
    
                config.Filters.Add(new SwaggerActionFilter());
                
                try
                {
                    config.Services.Replace(typeof(IDocumentationProvider),
                        new XmlCommentDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/ThinkingSpace.XML")));
                }
                catch (FileNotFoundException)
                {
                    throw new Exception("Please enable "XML documentation file" in project properties with default (bin\ThinkingSpace.XML) value or edit value in App_Start\SwaggerNet.cs");
                }
            }
        }
    }
    

    统一我们需要修改xml的位置即可。

    注意

    我们需要在webapi中只能存在一个get,否则会报错,因为需要符合restful 标准。

    一个controller中只能有一个HttpGet请求,多了就会报错。建议减少重载方法,将其他Get方法分开

    如果在swagger.config中加上c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());则会只显示第一个get方法

    另:可以不安装swagger ui for .net,安了有可能会报错

  • 相关阅读:
    Hibernate表中多对多关系的映射
    Servlet JDBC工具类
    访问gridview中的各类控件
    ASP.NET2.0中Gridview中的内容导出到Excel
    List<T> 分页方式,泛型分页方式
    VS保存和编译问题] 总是出现另一个程序正在使用此文件,进程无法访问
    JS实现DIV的增加和移动
    让Editplus调试PHP程序
    与UpdatePanel控件不兼容的控件
    在Powerdesigner中,根据已有字段的Name值替换Code相同的Name的值
  • 原文地址:https://www.cnblogs.com/aoximin/p/13195735.html
Copyright © 2011-2022 走看看