除了POST,PUT,DELETE,GET之外还有哪些其他HTTP方法

时间:2013-02-19 06:56:28

标签: asp.net web-services rest asp.net-web-api

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

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

例如,PutProducts添加产品

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

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

4 个答案:

答案 0 :(得分:2)

您只需使用任何想要使其运行的HTTP动词即可。但遵循REST Api使用的最佳实践,简单的概念是:

  1. GET:从REST服务中提取资源而不更改服务器状态。
  2. POST:创建新资源。
  3. PUT:更新资源。
  4. 删除:删除资源。
  5. 因此:

    1. 如果您的方法:ExecuteProcess运行在服务器上创建内容的进程,请使用POST。
    2. 如果它更新了服务器上的内容,请使用PUT。
    3. 如果删除服务器上的内容,请使用DELETE。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

您可以使用POST或GET,这取决于您尝试更新的内容。但在这种情况下,您应该使用正常的mvc控制器和操作。 WebApi与否,无论如何它们仍然是HTTP请求。

答案 3 :(得分:0)

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

更好的方法是启动流程的POST,GET查看流程的状态,如完整,正在进行等。