如何将.NET Framework版的WebApi为?

摘要:如果不得不使用.Net Framework开发web api,可以参考本文。主要内容包括创建、属性路由、配置Swagger、IHttpActionResult接口、.bat文件一键启动、打包发布。
1 创建 使用.Net做web后端,推荐使用.Net Core,微软在此基础上做了很多适配,包括内置Swagger,可以直接启动等等。而.Net Framework版,需要手动配置很多内容。 如果需要调用的项目是基于.Net Framework,那么web项目也应基于.Net Framework开发。或者其他原因不得不使用.Net Framework开发web项目,可以参考本文。 打开VS,在搜索栏输入“ASP.NET Web”,选择.Net Framework版,注意,这里要创建的是空白API项目,在前后端分离的项目中只作为后端接口,而不是MVC(模型-视图-控制器) 填写项目名,选择位置,选择需要的框架 创建一个空白项目,勾选“Web API”,取消勾选“HTTPS配置” 添加完成后,会创建以下目录结构: “App_Data”目录用于方式一些资源文件; “App_Start”目录下用于放置一些配置资源,默认已有一个配置类“WebApiConfig”,内容如下。config.MapHttpAttributeRoutes();表示启用了属性路由,允许在控制器和操作方法上直接使用特性(如 [Route])来定义路由规则。下半部分表示定义默认路由规则。 public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } “Controllers”目录下放置对外接口; “Models”目录下放置后端接口的内部逻辑,比如要接入数据库的操作等等。这些目录作为一个规范,如果违反这个规范随意放置,也可以正常运行,只不过看着比较杂乱。 2 测试 项目创建完成后,并没有提供任何对外接口,添加一个测试接口。选中“Controllers”目录=>右键=>添加=>Web API控制器类 填写名称,建议名称为“xxxController”(xxx为需要写的名称),此名称会被上文提到的“默认路由规则”匹配,将“xxx”作为api的一部分。 类创建完成后,会自动生成示例程序,包含Get, Post, Put, Delete请求 public class TestController : ApiController { // GET api/<controller> public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/<controller>/5 public string Get(int id) { return "value"; } // POST api/<controller> public void Post([FromBody] string value) { } // PUT api/<controller>/5 public void Put(int id, [FromBody] string value) { } // DELETE api/<controller>/5 public void Delete(int id) { } } 启动项目,基于.Net Framework的web项目需要借助于服务启动,vs调试默认使用IIS服务。 启动完成后,没有配置默认的访问地址就会显示如下界面。 测试Api访问。 3 配置属性路由规则 上文提到,配置类“WebApiConfig”中配置了默认路由规则,启用了属性路由。属性路由就是使用特性标记路由,使用属性路由代替了默认路由。
阅读全文