0

我正在使用 ASP.NET 的 WebAPI 创建一个 Web 服务。

似乎 ApiController 中的方法名称映射到了 Uri。

例如,PutProducts 添加产品

如果我想要一个执行的方法说..一个批处理文件..像 ExecuteProcess1();

这不需要返回任何商业价值的任何价值。只是让客户随意开火,这适合我的网络服务吗?应该调用什么方法?

4

4 回答 4

2

简单地说,你可以使用任何你想让它工作的 HTTP 动词。但是遵循 REST Api 如何使用的最佳实践,简单的概念是:

  1. GET:在不改变服务器状态的情况下从 REST 服务中提取资源。
  2. POST:创建新资源。
  3. PUT:更新资源。
  4. DELETE:删除资源。

所以:

  1. 如果您的方法:ExecuteProcess运行在服务器上创建某些内容的进程,请使用 POST。
  2. 如果它更新了服务器上的某些内容,请使用 PUT。
  3. 如果它删除了服务器上的某些内容,请使用 DELETE。
于 2013-02-19T07:35:11.490 回答
1

如果该方法正在修改服务器上的某些状态(例如更新数据库中的记录,写入文件,...),您应该使用 POST HTTP 动词。根据此方法正在修改的资源,您可以拥有相应的 API 控制器:

public class SomeResourceController: Controller
{
    public void Post()
    {
        ... do the processing here
    }
}

显然,您将用您正在操作的资源(产品、订单、人员……)替换此控制器名称中的SomeResource 。

于 2013-02-19T07:24:30.203 回答
0

如果您正在考虑将流程作为资源,那么理想情况下,您将执行 POST [假设您发布流程名称],否则将执行具有成功流程执行所需的适当查询参数的 GET。

更好的方法是 POST 用于启动流程,GET 以查看流程的状态,例如完成、进行中等。

于 2013-02-19T07:31:17.403 回答
0

您可以使用 POST 或 GET,这取决于您要更新的内容。但在这种情况下,您应该使用普通的 mvc 控制器和操作。不管有没有 WebApi,它们仍然是 HTTP 请求。

于 2013-02-19T07:28:49.053 回答