Web API的介绍
Web API 其实就是应用程序编程接口,在实际的生活中,我们使用的软件有很多都是从API中获取的数据,比如:天气预报,微信支付等都是使用的接口,这样我们在编程过程中就可以使用别人已经写好的接口,可以省很多时间和精力,当然一些我们自己使用的,就需要我们自己去编写了,下面介绍用C#写API接口的具体实现方法。
Web API项目在VS2015中的创建
新建ASP.NET Web应用程序
选择空,并把下面的Web API勾上
点击确定,一个Web API项目就完成了。
添加Web API控制器
右键单击Controllers文件夹,选择控制器
在MVC项目中,选择MVC5控制器,而Web API项目中,选择Web API 2控制器。
添加EF数据实体
右键单击Models,选择新建项–数据–ADO.NET数据模型
当你第一次新建的时候是这样的,我们需要新建连接
因为我们使用的是本地服务器,所以服务器名为.,然后使用SQL Server身份验证,输入数据库的管理员账号和密码。
输入完成之后的界面上是这样的,然后在下面选择你要操作的数据库
最后一步
这样一来,数据实体就建好了,但是数据库每一次结构的变化都需要对实体进行更新,当然,数据变化不需要更新
对数据实体的操作
需要先引用Model
using Test.Models;//Test是项目的名称,Models是实体所在的项目文件夹,自己根据需要进行改变
namespace Test.Controllers
{
public class HomeController : ApiController
{
//实例化实体对象,也可以在每个方法中实例化,这里实例化一个全局的,就可以少写很多代码
Demo2017Entities db = new Demo2017Entities();
}
}
API的路由
在WebApiConfig.cs文件中写着默认的路由规则
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但是我们需要声明API的类型(Get,Post,Put,Delete)
1.在方法名称的前面添加这几个关键字,比如:
public IHttpActionResult Getem()
{
var list = db.Employees.ToList();
return Json(list);
}
Web API需要用Postman来测试,上面的接口,我们在调用的时候,地址为:http://localhost:60668/api/Home/Getem 如果,我们把代码写成下面的样子,是不能调用的
public IHttpActionResult em()
{
var list = db.Employees.ToList();
return Json(list);
}
因为,在上面已经说过了,必须在方法前面声明调用的类型,如果不写类型,在Postman中会显示下面的错误
{
"Message": "The requested resource does not support http method 'GET'."
}
但是这样写,也是有弊端的,请看下面的代码
public IHttpActionResult Getem()
{
var list = db.Employees.ToList();
return Json(list);
}
public IHttpActionResult Getom()
{
var list = db.Employees.ToList();
return Json(list);
}
这是两个名称不一样的代码,但是他们两个都是Get请求,所以在调用的时候,会提示错误:一个控制器中有两个Gte请求,所以我们需要自定义路由和声明方法的类型
常规的写法
[HttpGet]
[Route("api/home/getem")]
public IHttpActionResult Getem()
{
var list = db.Employees.ToList();
return Json(list);
}
[HttpGet]
[Route("api/home/getom")]
public IHttpActionResult Getom()
{
var list = db.Employees.ToList();
return Json(list);
}
第一个中括号内声明方法的类型,有HttpGet,HttpPost,HttpPut,HttpDelete四种,第二个中括号中自定义路由,通俗来讲,就是自定义访问地址
这样一来,我们来调用接口,就不需要在注意那些繁琐的规则了
调用第一个接口:http://localhost:60668/api/home/getem 调用第一个接口:http://localhost:60668/api/home/getom 整个Web API的建项目和路由规则就完成了
Linq语句操作数据库
掌握了Web API的编写,我们还需要了解数据的操作,不然,之前的工作就是白干。
普通的查询
var list = db.Employees.ToList();//直接查找整个表
var lists=db.Employees.Where(a => a.CompanyId == 12);//查找Employees表中CompanyId等于12的数据
var listss = db.Employees.Where(a => a.CompanyId == 12&&a.Name=="dashazi");//查找Employees表中CompanyId等于12的数据并且Name等于dahsazi的数据
var listsss=from a in db.Employees
join b in db.Companies
on a.CompanyId equals b.Id
where a.Id==12
select new{a,b};
//两表连接查询,A表joinB表onA表的某一行equalsB表的某一行
//这种写法的情况下,两个列相等不能直接用==,需要用equals