精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
在这篇文章中,我们将继续为“CoursesController”实现其他HTTP操作,然后简要讨论我们在“StudentsController”中实现的内容。
使用HTTP Post操作创建新课程
我们将向“CoursesController”添加名为Post(CourseModel courseModel)的新方法,以下是实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public HttpResponseMessage Post([FromBody] CourseModel courseModel) if (entity == null) Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not read subject/tutor from body"); if (TheRepository.Insert(entity) && TheRepository.SaveAll()) return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex); |
在上面的实现中,我们需要注意四件事情:
为了测试这个,我们需要打开fiddler并选择Composer选项卡,我们将向URI发出POST请求:http:// localhost:{your_port} / api / courses /请求将如下图所示:
在这个HTTP POST请求中,我们需要注意以下几点:
如果此POST请求在服务器上成功执行,并且创建了一个新课程,我们将在响应头中接收状态代码201(创建资源)以及响应主体中在服务器上创建的新课程。你可以检查如下图像:
使用HTTP PUT操作更新现有课程
我们将向“CoursesController”类添加名为Put(int Id,CourseModel courseModel)的新方法,如下面的实现:
1 |
[HttpPatch] var updatedCourse = TheModelFactory.Parse(courseModel); if (updatedCourse == null) Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Could not read subject/tutor from body"); var originalCourse = TheRepository.GetCourse(id, false); if (originalCourse == null || originalCourse.Id != id) if (TheRepository.Update(originalCourse, updatedCourse) && TheRepository.SaveAll()) } |
在上面的实现中,我们需要注意以下几点:
要测试这个,我们需要使用fiddler并选择Composer选项卡,我们将向URI发出一个PUT请求: http:// localhost:{your_port} / api / courses / 33请求将如下图所示:
在这个HTTP PUT请求中,我们需要注意以下几点:
如果此PUT请求在服务器上成功执行,并且课程已更新,我们将在响应头中接收状态代码200(OK)以及响应主体中服务器上更新的课程。
使用HTTP DELETE操作删除课程
我们将向“CoursesController” 添加名为Delete(int Id)的 新方法 ,如下面的实现:
1 |
public HttpResponseMessage Delete(int id) if (course == null) if (course.Enrollments.Count > 0) if (TheRepository.DeleteCourse(id) && TheRepository.SaveAll()) } |
在上面的实现中,我们需要注意以下几点:
为了测试这个,我们需要使用fiddler并选择Composer选项卡,我们将向URI发出DELETE请求: http:// localhost:{your_port} / api / courses / 33请注意,请求的正文是空的,请求将如下图所示:
将学生控制器添加到项目中
新的控制器“StudentsController”将负责对学生进行CRUD操作。控制器将负责执行以下操作:
我不会在这里列出“StudentsController”的代码,因为它与“CoursesController”是一样的,您可以在GitHub上浏览它。我将列出我们添加到“WebApiConfig”类的新路由配置。
1 |
config.Routes.MapHttpRoute( |