蓝盟IT外包
Web服务以这种形式或这种形式已经存在了将近20年。 例如,XML-RPC服务出现在90年代后半期,继续使用SOAP分支描述的服务。 XML-RPC和SOAP两位先驱出现不久,REST架构风格的服务也在大约20年前出现了。 rest风格的服务现在领先于eBay、Facebook、Twitter等常见网站。 基于rest风格的Web服务非常有吸引力,虽然分布式计算的Web服务有很多替代方案,包括Web套接字、微服务和远程过程调用的新框架
rest风格的服务基于现有的基础架构和协议,尤其是Web服务和HTTP/HTTPS协议。 有基于HTML网站的组织可以轻松地向对数据和基础功能感兴趣的客户添加Web服务,而不是HTML的表示。 例如,亚马逊首先提供与基于SOAP和rest风格的Web服务相同的信息和功能。
rest风格的服务将HTTP视为API,避免了基于SOAP的Web服务的复杂软件层次结构。 例如,rest风格的API支持使用HTTP命令(POST-GET-PUT-DELETE )的标准CRUD (添加-读取-更新-删除)操作。 使用HTTP状态代码可以知道请求是成功还是失败。

rest风格的web服务可以根据需要简化或复杂化。 rest风格是一种风格,实际上是一种非常灵活的风格,不是服务设置修订和构建方法的一系列规定。 (相应的缺点是,很难确定哪些服务不被视为rest风格的服务。 中所述)
作为用户或客户端,rest风格的web服务与语言和平台无关。 客户端发送HTTP(S )请求,并以适合现代数据交换的格式(如JSON )接收文本响应。
几乎所有的通用编程语言都支持至少足够的HTTP/HTTPS (通常是强大的)。 也就是说,Web服务的客户端可以用这些语言编写。本文使用完整的Java代码示例来介绍轻量级rest风格的服务。
基于rest风格的“小说”网络服务
基于rest风格的小说web服务包含三个程序员定义的类
Novel类表示小说,只有机器生成的ID、作者、标题三个属性。 属性可以根据情况进行扩展,但我想更简单地展示这个例子。
Novels类包含用于将Novel或其列表的纯文本编码转换为XML或JSON的各种任务的工具类。帮助在小说集合中执行CRUD操作,并从存储在文件中的数据中进行集合Novels类在Novel实例和servlet之间起中介作用。
novels servlet类继承自http servlet,http servlet是一个强健灵活的代码,从90年代末的早期企业类Java就已存在。 对于客户端CRUD请求,servlet可以用作HTTP的端点。 servlet代码主要用于处理来自客户端的请求,生成适当的响应,并将复杂细节留在Novels类的工具类中进行处理。
Java框架(如Jersey(JAX-RS )和Restlet )已针对rest风格的服务进行了修订。 然而,http servlet本身为完成这些服务提供了轻量、灵活、强大、经过充分测试的API。 以下面的“小说”的例子来说明。