REST和HTTP协议有什么区别?

时间:2011-03-27 11:53:32

标签: http rest terminology

什么是REST协议?它与HTTP协议有什么不同?

5 个答案:

答案 0 :(得分:35)

答案 1 :(得分:32)

REST是一种利用HTTP协议的方法,不能替代它。

数据由URL唯一引用,可以使用HTTP操作(GET,PUT,POST,DELETE等)执行操作。消息/响应支持各种各样的mime类型,但XML和JSON是最常见的。

例如,要阅读有关客户的数据,您可以使用URL http://www.example.com/customers/1进行HTTP get操作。如果要删除该客户,只需使用具有相同URL的HTTP删除操作。

下面的Java代码演示了如何通过HTTP协议进行REST调用:

String uri =
    "http://www.example.com/customers/1";
URL url = new URL(uri);
HttpURLConnection connection =
    (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");

JAXBContext jc = JAXBContext.newInstance(Customer.class);
InputStream xml = connection.getInputStream();
Customer customer =
    (Customer) jc.createUnmarshaller().unmarshal(xml);

connection.disconnect();

对于Java(JAX-RS)示例,请参阅:

答案 2 :(得分:10)

REST不是协议,它是用于描述无状态缓存客户端 - 服务器分布式媒体平台的通用架构。 REST架构可以使用许多不同的通信协议来实现,尽管HTTP是目前最常见的。

答案 3 :(得分:4)

REST不是一种协议,它是一种暴露应用程序的方式,主要通过HTTP完成。

例如,您希望公开应用程序的api,它执行getClientById
而不是创建一个URL

yourapi.com/getClientById?id=4
你可以做到 yourapi.com/clients/id/4

因为您使用的是GET方法,这意味着您要获取数据

您利用HTTP方法:GET / DELETE / PUT
yourapi.com/clients/id/4也可以处理删除,如果你发送删除方法而不是GET,这意味着你想要删除记录

答案 4 :(得分:0)

所有答案都很好。

我在此添加 REST 的详细说明以及它如何使用 HTTP

REST =具象状态转移

REST 是一组规则,在遵循这些规则时,您可以构建具有一组特定约束的分布式应用程序。

它是无状态的,这意味着理想情况下客户端和服务器之间不应保持连接。

客户端有责任将其上下文传递给服务器,然后服务器可以存储此上下文以处理客户端的进一步请求。例如,服务器维护的会话由客户端传递的会话标识符标识。

无国籍状态的优点:

  1. Web服务可以单独处理每个方法调用。
  2. Web服务无需维护客户端之前的交互。
  3. 这反过来简化了应用程序设计。
  4. HTTP本身就是一种与TCP不同的无状态协议,因此RESTful Web服务可以与HTTP协议无缝协作。
  5. 无国籍状态的缺点:

    1. 需要在每个请求中添加一个标题形式的额外图层以保留客户端的状态。
    2. 为了安全起见,我们可能需要为每个请求添加标题信息。
    3. REST支持的HTTP方法:

      获取:/string/someotherstring
      它是幂等的(意味着多次调用每次都应返回相同的结果),理想情况下,每次调用时都应返回相同的结果

      PUT:
      和GET一样。幂等,用于更新资源。

      POST:应该包含网址和正文 用于创建资源。理想情况下,多次调用应返回不同的结果,并应创建多个产品。

      DELETE:
      用于删除服务器上的资源。

      HEAD:

      HEAD方法与GET相同,只是服务器不能在响应中返回消息体。响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求时发送的信息相同。

      选项:

      此方法允许客户端确定与资源相关的选项和/或要求,或服务器的功能,而不会暗示资源操作或启动资源检索。

      HTTP响应

      Go here for all the responses

      以下是一些重要的事项:
      200 - 好的 3XX - 客户端和网址重定向所需的其他信息 400 - 不良请求
      401 - 未经授权访问
      403 - 禁止
      请求有效,但服务器拒绝操作。用户可能没有资源的必要权限,或者可能需要某种帐户。

      404 - 未找到
      找不到请求的资源,但将来可能会提供。客户的后续请求是允许的。

      405 - 不允许的方法 请求的资源不支持请求方法;例如,表单上的GET请求需要通过POST显示数据,或者在只读资源上显示PUT请求。

      404 - 未找到请求
      500 - 内部服务器故障
      502 - 错误的网关错误