Web API 的自定义方法,这不是标准的 CRUD 方法



我注意到大多数Web api教程都提到了CRUD方法。我的问题是那些不是CRUD的方法呢?例如,如果我有一个具有以下属性的员工模型:ID、姓名、电子邮件、用户名和密码。对于管理模块,对于update employee function,没有问题,因为 Web API 将在 CRUD 中。例如:

public class EmployeeController : ApiController
{
private AppDbContext db = new AppDbContext();
// PUT api/Employee/5
public IHttpActionResult PutEmployee(int id, Employee employee)
{
if (id != employee.EmployeeID)
{
return BadRequest();
}
db.Entry(employee).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!EmployeeExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
}

但是对于员工模块,change password功能呢?我是否需要为每个函数创建另一个带有put动词的控制器?

我找到了一篇与我的问题相关的文章。如何为 ATM 程序创建自定义方法,如存款 (httppost( 和 witdrawal (httppost(?

这取决于情况。如果您觉得密码本身就是资源,那么您可以拥有以下内容:

PUTapi/customer/{id}/password

那会成为你的控制器

public IHttpActionResult PutCustomerPassword(int id, Password password)

如果密码只是客户中的一个字符串,则更新客户在Employee对象中发送新密码。

当然,您可以使用继承,创建一个新的基本控制器,该控制器具有一些用户管理功能并在员工和客户之间共享。这样,您可以将 CustomerController 和 EmployeeController 用作入口点,并调用 BaseController 代码来完成实际工作。

最新更新