什么是REST协议?它与HTTP协议有什么不同?
答案 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 是一组规则,在遵循这些规则时,您可以构建具有一组特定约束的分布式应用程序。
它是无状态的,这意味着理想情况下客户端和服务器之间不应保持连接。
客户端有责任将其上下文传递给服务器,然后服务器可以存储此上下文以处理客户端的进一步请求。例如,服务器维护的会话由客户端传递的会话标识符标识。
无国籍状态的优点:
无国籍状态的缺点:
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 - 错误的网关错误