本节是前面两节的延续,前面咱们为Web API建立了必要的基础设施,并实现了Get方法。在这里,咱们将在Web API中实现POST方法。数据库
在RESTful架构中,使用HTTP POST请求用来在数据源中建立一个新的记录。让咱们在StudentController中建立一个Post操做方法来使用实体框架在数据库中插入新学生记录。c#
处理HTTP POST请求的操做方法命名必须以Post开头。能够直接叫Post,也能够叫以Post开头的任何名字,例如:POST(), Post(), PostNewStudent(), PostStudents()等都是合格的命名。架构
下面的例子演示了用来处理HTTP Post请求Post操做方法。框架
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public
class
StudentController : ApiController
{
public
StudentController()
{
}
//Get action methods of the previous section
public
IHttpActionResult PostNewStudent(StudentViewModel student)
{
if
(!ModelState.IsValid)
return
BadRequest(
"Invalid data."
);
using
(var ctx =
new
SchoolDBEntities())
{
ctx.Students.Add(
new
Student()
{
StudentID = student.Id,
FirstName = student.FirstName,
LastName = student.LastName
});
ctx.SaveChanges();
}
return
Ok();
}
}
|
正如您所看到的,咱们将Action方法命名为PostNewStudent。你能够按你的要求取任何名称,但必须以“Post”这个词开头。PostNewStudent()操做方法包括StudentViewModel类型的参数,该参数包括新学生的全部的信息。学习
在Post方法,咱们首先须要使用ModelState.IsValid验证模型,这将确保学生对象包括全部必要的信息。若是它是无效的,那么你能够返回BadRequest响应。若是它是有效的,那么使用实体框架上下文添加学生并返回200 OK状态的响应。spa
注意:这只是一个演示项目,若是须要的话,您能够在返回信息中返回新建立的学生对象的Id。code
如今,您能够使用Fiddler发送HTTP POST请求,以下所示。对象
正如你在上面的图中所看到的,HTTP POST请求包括JSON格式的StudentViewModel对象的请求主体。ci
成功执行后返回200 OK响应状态。string
接下来,咱们将学习如何在Web API中实现Put动做方法来处理HTTP Put请求的。