本節是前面兩節的延續,前面咱們爲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請求的。