精简WebAPI项目模板,使用Swagger生成接口文档

开发工具:VS2017 版本15.7.1

新建项目,选择ASP.NET Web模板,.NET版本选择4.5.2,只选择WebAPI

这是模板自动生成的项目,接下来要把用不到的东西删掉

右键【管理 NuGet程序包】,删除无用的依赖包

在【已安装】目录下,依次删除以下依赖程序包

  • Microsoft.AspNet.Web.Optimization.zh-Hans
  • Microsoft.AspNet.Web.Optimization
  • WebGrease
  • Antlr
  • bootstrap
  • jQuery
  • Microsoft.ApplicationInsights.Web
  • Microsoft.ApplicationInsights.WindowsServer
  • Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel
  • Microsoft.ApplicationInsights.PerfCounterCollector
  • Microsoft.ApplicationInsights.DependencyCollector
  • Microsoft.ApplicationInsights.Agent.Intercept
  • Microsoft.ApplicationInsights
  • Microsoft.AspNet.TelemetryCorrelation
  • Modernizr
  • Microsoft.AspNet.WebApi.HelpPage

删除无用的项目文件

  • App_Data
  • App_Start/BundleConfig.cs
  • Areas
  • Content
  • Models
  • Views
  • ApplicationInsights.config

配置Web.config

 <system.webServer> 节点改为

  <system.webServer>
    <handlers>
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <!-- 兼容IIS版本 -->
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>
    <!-- 正式环境,不需要配置跨域 -->
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept, Authorization" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

<runtime>节点中,删除已经去除的依赖包

到此,项目精简结束。接下来,我们要加入Swagger。打开NuGet,找到 Swashbuckle 并安装

 

修改 SwaggerConfig.cs

接口文档是根据项目的xml结构文件生成的,首先要开启该功能

在配置SwaggerConfig.cs 中,设置对应的xml路径。如果有多个,则依次配置(比如有多个模型类库)。

 

开启验证,这里是简单的请求头模式

写一个测试接口,注意使用 ResponseType,才会显示响应的参数

    public class TestController : ApiController
    {
        /// <summary>
        /// 测试接口
        /// </summary>
        [Route("api/name")]
        [HttpGet]
        [ResponseType(typeof(MyResp))]
        public IHttpActionResult GetName([FromUri]MyReq req)
        {
            var resp = new MyResp();
            resp.name = req.name;
            return Ok(resp);
        }
    }

    /// <summary>
    /// 测试请求
    /// </summary>
    public class MyReq
    {
        /// <summary>
        /// 输入姓名
        /// </summary>
        public string name { get; set; }
    }

    /// <summary>
    /// 测试响应
    /// </summary>
    public class MyResp
    {
        /// <summary>
        /// 输出姓名
        /// </summary>
        public string name { get; set; }
    }

 来看下最后的效果

 

 

猜你喜欢

转载自www.cnblogs.com/dwinter/p/10029639.html