zoukankan      html  css  js  c++  java
  • [译]RESTful中不同HTTP请求类型的含义

    [译]RESTful中不同HTTP请求类型的含义

     

    RESTful web服务在设计上非常依赖于HTTP。通过使用不同的HTTP方法来完成工作,使用HTTP的响应代码来同时用户一个请求是否成功。RESTful表示Representational State tranfer,使用HTTP来实现两个系统之间通信。RESTful web服务是一些指向资源的URI(统一资源标识符)的集合。这些URI可以指向一个资源或者多个资源的集合。比如说,/employee/101包含的是员工101的详细信息,而/employees会返回所有员工的列表。在RESTful web服务中,HTTP请求类型表示要对资源进行的操作。

    例如:
    使用HTTP GET请求访问/employee/101,可以取回该用户的详细信息。
    使用POST请求访问/employee/102,将会创建一个ID为102的新员工。、使用PUT请求访问/employee/101,可以用来更新员工101的信息。
    使用DELETE请求访问/employee/101,可以删除ID为101的员工的数据。

    在使用PUT和POST请求的时候,具体的数据将会包含在请求体中。

    Purpose of HTTP Request in RESTful WebService

    当使用RESTful web服务的时候,每一种HTTP请求方法的含义如下:

    GET

    从服务器取回数据(只是取回数据,而不会产生其他的影响)。这是一个幂等的方法(译者注:使用相同的参数重复执行,应该能够获取到相同的结果)。下面是一个使用GET请求从服务器获取id为123的书的例子:

    GET /books/123

    POST

    POST请求通常用来创建一个实体,也就是一个没有ID的资源。一旦这个请求成功执行了,就会在HTTP请求的响应中,返回这个新创建的实体的id。我们通常用它来上传文件或者表单。
    比如,下面这个URL将会在服务器上创建一本新书:

    POST /books/

    PUT

    PUT请求和POST请求类似,但是一般用来更新一个已有的实体。通过把已经存在的资源的ID和新的实体用PUT请求上传的服务器,来更新资源。
    比如,下面这个URL将会替换掉服务器上的ID为123的书:

    PUT /books/123

    可以参考Leonard Richardson, Sam Ruby, and David Heinemeier Hansson写的RESTful Web Services,来了解RESTful API中什么时候该使用PUT和POST。

    DELETE

    DELETE方法用来从服务器上删除资源。和PUT类似,你需要把要删除的资源的ID上传给服务器。
    比如下面这个URL可以用来删除服务器上ID为123的书:

    DELETE /books/123

    TRACE

    提供一种方法来测试当一个请求发生的时候,服务器通过网络收到的内容。所以,它会返回你发送的内容。

    HEAD

    HEAS请求和GET请求资源类似,但是仅仅返回响应的头部(没有具体的响应体)。同时,和GET请求类似,HEAD也是幂等的,不会在服务器上造成其他影响。

    OPTIONS

    OPTIONS方法允许客户端请求一个服务所支持的请求方法。它所对应的响应头(response header)是Allow, 它非常简单地列出了支持的方法。
    (以下例子为译者添加)
    比如:

    200 OK
    Allow: HEAD,GET,PUT,DELETE,OPTIONS

    CONNECT

    主要用来建立一个对资源的网络连接(通常请求一些能够把HTTP连接转发成为TCP连接并保持的代理)。一旦建立连接后,会响应一个200状态码和一条“Connection Established”的消息。

    下面这张图展示了在RESTful web服务中,不同的HTTP方法的用法:


    不同HTTP方法 的用法

    以上就是在RESTful web服务中不同HTTP请求类型的含义,不管是在Java中还是在其他技术中。最重要的是理解PUT和POST之间的区别,尽管PUT和POST都可以用来创建和更新实体,但是通常更倾向于使用POST来创建,而使用PUT来更新已存在的实体。

  • 相关阅读:
    .NET Interop 工具集
    关于正弦波的算法
    Windows Phone 系列 本地数据存储
    Xaml cannot create an instance of “X”
    Windows Phone 系列 使用 MVVM绑定时无法获取当前值
    Windows Phone 系列 应用程序图标无法显示
    Windows Phone 系列 WPConnect无法上网的问题
    Windows Phone 系列 使用 Windows Phone 保存铃声任务
    WP7.5提交应用
    Windows Phone 系列 动态删除ObservableCollection
  • 原文地址:https://www.cnblogs.com/shierban/p/7513311.html
Copyright © 2011-2022 走看看