我正在使用 ASP.NET 的 WebAPI 创建一个 Web 服务。
似乎 ApiController 中的方法名称映射到了 Uri。
例如,PutProducts 添加产品
如果我想要一个执行的方法说..一个批处理文件..像 ExecuteProcess1();
这不需要返回任何商业价值的任何价值。只是让客户随意开火,这适合我的网络服务吗?应该调用什么方法?
我正在使用 ASP.NET 的 WebAPI 创建一个 Web 服务。
似乎 ApiController 中的方法名称映射到了 Uri。
例如,PutProducts 添加产品
如果我想要一个执行的方法说..一个批处理文件..像 ExecuteProcess1();
这不需要返回任何商业价值的任何价值。只是让客户随意开火,这适合我的网络服务吗?应该调用什么方法?
简单地说,你可以使用任何你想让它工作的 HTTP 动词。但是遵循 REST Api 如何使用的最佳实践,简单的概念是:
所以:
ExecuteProcess
运行在服务器上创建某些内容的进程,请使用 POST。如果该方法正在修改服务器上的某些状态(例如更新数据库中的记录,写入文件,...),您应该使用 POST HTTP 动词。根据此方法正在修改的资源,您可以拥有相应的 API 控制器:
public class SomeResourceController: Controller
{
public void Post()
{
... do the processing here
}
}
显然,您将用您正在操作的资源(产品、订单、人员……)替换此控制器名称中的SomeResource 。
如果您正在考虑将流程作为资源,那么理想情况下,您将执行 POST [假设您发布流程名称],否则将执行具有成功流程执行所需的适当查询参数的 GET。
更好的方法是 POST 用于启动流程,GET 以查看流程的状态,例如完成、进行中等。
您可以使用 POST 或 GET,这取决于您要更新的内容。但在这种情况下,您应该使用普通的 mvc 控制器和操作。不管有没有 WebApi,它们仍然是 HTTP 请求。