本节教程是前三节的延续,在前面我们创建了Web API和必要的基础设施,也实现了Get和Post方法。接下来,我们将在Web API中实现Put方法。

RESTful架构中,HTTP PUT方法用于在数据源更新现有记录。

让我们在StudentController中创建一个操作方法用来使用实体框架在数据库中更新现有的学生记录。用来处理Http Put类型请求的Action方法,取名必须以Put开头,或者直接叫Put()。例如:PUT(), Put(), PutStudent(), PutStudents()都是合格的Put类型方法名称。

下面的例子演示了用来处理HTTP Put请求的Action方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class StudentController : ApiController
{
    public StudentController()
    {
    }
    public IHttpActionResult Put(StudentViewModel student)
    {
        if (!ModelState.IsValid)
            return BadRequest("Not a valid model");
        using (var ctx = new SchoolDBEntities())
        {
            var existingStudent = ctx.Students.Where(s => s.StudentID == student.Id)
                                                    .FirstOrDefault<Student>();
            if (existingStudent != null)
            {
                existingStudent.FirstName = student.FirstName;
                existingStudent.LastName = student.LastName;
                ctx.SaveChanges();
            }
            else
            {
                return NotFound();
            }
        }
        return Ok();
    }
}

正如您所看到的,Put动作方法包括一个StudentViewModel类型的参数。该方法先查询出之前创建的Student对象,然后修改对象。

现在,您可以使用Fiddler发送HTTP PUT请求,如下所示。

创建包含CRUD操作的Web API接口4:实现Put方法-LMLPHP

正如你在上面的图中所看到的,HTTP PUT请求包括JSON格式的StudentViewModel对象的请求主体。

在成功执行之后返回200 OK响应状态。

接下来,我们将在Web API中实现删除操作方法来处理HTTP Delete请求。

05-11 22:14