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”,内容如下:
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 }
);
}
}
// config.MapHttpAttributeRoutes();表示启用了属性路由,允许在控制器和操作方法上直接使用特性(如 [Route])来定义路由规则。
// 下半部分表示定义默认路由规则。
“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”中配置了默认路由规则,启用了属性路由。属性路由就是使用特性标记路由,使用属性路由代替了默认路由。
示例如下:
[RoutePrefix("api/TestABC")]
public class TestController : ApiController
{
[HttpGet]
[Route("GetValue")]
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
启动,测试访问,可以看到,路由规则已经由默认路由规则变为了属性路由规则。
4 配置Swagger
4.1 基本配置
在NuGet中下载安装“Swashbuckle”
安装完成后,在“App_Start”目录下会自动生成“SwaggerConfig”配置类。可以修改需要显示的内容,下图这个语句包含两条信息,“版本”和“Title”。
在项目属性中,勾选生成“XML文档文件”,本质上是Swagger将此xml转换为Swagger格式的内容。
安装完之后,再访问本地URL,可能会报一个错,这里不要慌,一般是安装的“Swashbuckle”包依赖的内容与现有安装的包不相符,在NuGet包管理器中全部更到最新即可。
启动后在原有url后加入/swagger即可访问文档。
展开后,可以点击“Try i