REST协议是什么?它与HTTP协议有何不同?
工具包的可用性:由于RESTful系统在相对简单的级别上运行,如果您拥有一个Web服务器,就可以构建RESTful系统的服务器,如果您有任何类型的HTTP客户端API(浏览器JavaScript中的XHR,.NET中的HttpWebRequest等),则可以构建RESTful系统的客户端。
弹性:特别是缺乏共享状态意味着客户端可以死亡并重新使用而服务器不知道,甚至服务器也可以死亡并重新使用而客户端不知道。显然,在此期间的通信将失败,但一旦服务器恢复在线,事情就可以像以前一样继续进行。这实际上还简化了用于冗余和性能的Web农场的使用-每个服务器都像它是唯一的服务器一样运作,并且事实上只处理给定客户端的一小部分请求也无关紧要。
REST是一种利用HTTP协议的方法,而不是其替代品。
数据通过URL唯一引用,并可以使用HTTP操作(GET、PUT、POST、DELETE等)进行操作。 支持多种消息/响应的MIME类型,但XML和JSON最常用。
例如,要读取有关客户的数据,可以使用带有URL http://www.example.com/customers/1的HTTP GET操作。 如果您想删除该客户,则只需使用相同URL的HTTP DELETE操作。
以下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)的示例请参见:
REST不是一个协议,而是一种用于描述无状态、缓存客户端-服务器分布式媒体平台的通用架构。REST架构可以使用许多不同的通信协议实现,但HTTP远远是最常见的。
REST不是一种协议,而是一种通过HTTP方式暴露应用程序的方法。
例如,您想要公开应用程序的一个名为“getClientById”的API。
不需要创建URL:
yourapi.com/getClientById?id=4
您可以这样做:
yourapi.com/clients/id/4
由于您使用的是GET方法,这意味着您想要获取数据。
您可以利用HTTP方法:GET/DELETE/PUT
如果您发送的是Delete方法而不是GET,则yourapi.com/clients/id/4也可以处理删除操作,这意味着您想要删除该记录。
所有答案都是好的。
我在此添加了一个关于REST及其如何使用HTTP的详细说明。
REST = 表现层状态转移
REST是一组规则,遵循这些规则可以构建具有特定约束集的分布式应用程序。
它是无状态的,这意味着理想情况下客户端和服务器之间不应该保持连接。
客户端将其上下文传递给服务器,然后服务器可以存储此上下文以处理客户端的进一步请求。例如,由客户端传递的会话标识符标识由服务器维护的会话。
无状态的优点:
无状态的缺点:
REST支持的HTTP方法:
GET:/string/someotherstring
:
它是幂等的(即多次调用应该每次返回相同的结果),理想情况下每次调用都应该返回相同的结果
PUT:
与GET相同。幂等并用于更新资源。
POST:应包含URL和正文
用于创建资源。理想情况下,多个调用应该返回不同的结果,并且应该创建多个产品。
DELETE:
用于删除服务器上的资源。
HEAD:
HEAD方法与GET方法相同,除了服务器不能在响应中返回消息正文。响应的HTTP标头中包含的元信息应与响应GET请求时发送的信息相同。
OPTIONS:
此方法允许客户端确定与资源相关联的选项和/或要求,或服务器的功能,而不意味着资源操作或启动资源检索。
HTTP响应
以下是一些重要的响应:
200 - OK
3XX - 需要从客户端获取更多信息和URL重定向
400 - 请求无效
401 - 未经授权访问
403 - 禁止访问
请求是有效的,但服务器拒绝执行操作。用户可能没有某种资源的必要权限,或者可能需要某种类型的帐户。
404 - 未找到资源
所请求的资源无法找到,但可能在未来可用。客户端可以进行后续请求。
405 - 不允许使用该方法
不支持请求方法所请求的资源;例如,在需要通过POST提交数据的表单上发出GET请求,或者在只读资源上发出PUT请求。
404 - 请求未找到
500 - 内部服务器错误
502 - 坏的网关错误