文章插图
通过管理一套图书的完整代码示例,来探索轻量级的 RESTful 服务 。• 来源:linux.cn • 作者:Marty Kalin • 译者:MCGA •
(本文字数:24337,阅读时长大约:28 分钟)
Web 服务,以这样或那样的形式,已经存在了近二十年 。比如, XML-RPC 服务 出现在 90 年代后期,紧接着是用 SOAP 分支编写的服务 。在 XML-RPC 和 SOAP 这两个开拓者之后出现后不久,REST 架构风格的服务在大约 20 年前也出现了 。REST 风格(以下简称 Restful)服务现在主导了流行的网站,比如 eBay、Facebook 和 Twitter 。尽管分布式计算的 Web 服务有很多替代品(如 Web 套接字、微服务和远程过程调用的新框架),但基于 Restful 的 Web 服务依然具有吸引力,原因如下:
- Restful 服务建立在现有的基础设施和协议上,特别是 Web 服务器和 HTTP/HTTPS 协议 。一个拥有基于 html 的网站的组织可以很容易地为客户添加 Web 服务,这些客户对数据和底层功能更感兴趣,而不是对 HTML 的表现形式感兴趣 。比如,亚马逊就率先通过网站和 Web 服务(基于 SOAP 或 Restful)提供相同的信息和功能 。
- Restful 服务将 HTTP 当作 API,因此避免了复杂的软件分层,这种分层是基于 SOAP 的 Web 服务的明显特征 。比如,Restful API 支持通过 HTTP 命令(POST-GET-PUT-DELETE)进行标准的 CRUD(增加-读取-更新-删除)操作;通过 HTTP 状态码可以知道请求是否成功或者为什么失败 。
- Restful Web 服务可以根据需要变得简单或复杂 。Restful 是一种风格,实际上是一种非常灵活的风格,而不是一套关于如何设计和构造服务的规定 。(伴随而来的缺点是,可能很难确定哪些服务不能算作 Restful 服务 。)
- 作为使用者或者客户端,Restful Web 服务与语言和平台无关 。客户端发送 HTTP(S) 请求,并以适合现代数据交换的格式(如 JSON)接收文本响应 。
- 几乎每一种通用编程语言都至少对 HTTP/HTTPS 有足够的(通常是强大的)支持,这意味着 Web 服务的客户端可以用这些语言来编写 。
基于 Restful 的“小说” Web 服务基于 Restful 的“小说” web 服务包含三个程序员定义的类:
- Novel 类代表一个小说,只有三个属性:机器生成的 ID、作者和标题 。属性可以根据实际情况进行扩展,但我还是想让这个例子看上去更简单一些 。
- Novels 类包含了用于各种任务的工具类:将一个 Novel 或者它们的列表的纯文本编码转换成 XML 或者 JSON;支持在小说集合上进行 CRUD 操作;以及从存储在文件中的数据初始化集合 。Novels 类在 Novel 实例和 servlet 之间起中介作用 。
- NovelsServlet 类是从 HttpServlet 中继承的,HttpServlet 是一段健壮且灵活的代码,自 90 年代末的早期企业级 Java 就已经存在了 。对于客户端的 CRUD 请求,servlet 可以当作 HTTP 的端点 。servlet 代码主要用于处理客户端的请求和生成相应的响应,而将复杂的细节留给 Novels 类中的工具类进行处理 。
部署“小说” Web 服务当然,部署“小说” Web 服务需要一个 Web 服务器 。我的选择是 Tomcat ,但是如果该服务托管在 Jetty 或者甚至是 Java 应用服务器上,那么这个服务应该至少可以工作(著名的最后一句话!) 。在我的网站上 有总结了如何安装 Tomcat 的 README 文件和代码 。还有一个附带文档的 Apache Ant 脚本,可以用来构建“小说”服务(或者任何其他服务或网站),并且将它部署在 Tomcat 或相同的服务 。
Tomcat 可以从它的 官网 上下载 。当你在本地安装后,将 TOMCAT_HOME 设置为安装目录 。有两个子目录值得关注:
- TOMCAT_HOME/bin 目录包含了类 Unix 系统(startup.sh 和 shutdown.sh)和 windows(startup.bat 和 shutdown.bat) 的启动和停止脚本 。Tomcat 作为 Java 应用程序运行 。Web 服务器的 servlet 容器叫做 Catalina 。(在 Jetty 中,Web 服务器和容器的名字一样 。)当 Tomcat 启动后,在浏览器中输入 http://localhost:8080/可以查看详细文档,包括示例 。
- TOMCAT_HOME/webApps 目录是已部署的 Web 网站和服务的默认目录 。部署网站或 Web 服务的直接方法是复制以 .war 结尾的 JAR 文件(也就是 WAR 文件)到 TOMCAT_HOME/webapps 或它的子目录下 。然后 Tomcat 会将 WAR 文件解压到它自己的目录下 。比如,Tomcat 会将 novels.war 文件解压到一个叫做 novels 的子目录下,并且保留 novels.war 文件 。一个网站或 Web 服务可以通过删除 WAR 文件进行移除,也可以用一个新版 WAR 文件来覆盖已有文件进行更新 。顺便说一下,调试网站或服务的第一步就是检查 Tomcat 已经正确解压 WAR 文件;如果没有的话,网站或服务就无法发布,因为代码或配置中有致命错误 。
推荐阅读
- 江华毛尖功效与禁忌,茉莉毛尖属于什么茶茉莉花茶毛尖的功效与作用
- 教你一个万能的PPT排版小技巧,简单易学,而且什么场合都能用
- 冥王阿茶是谁 冥王阿茶百度百科
- 金银花茶副作用及功效,金银花茶斤多少钱金银花茶选购方法
- 黄金苦荞茶的功效,苦荞茶的功效与作用
- 割双眼皮热敷的作用大吗?
- 金桔干茶的功效与作用,枸杞麦冬茶的功效与作用
- 杨玉环的身高及体重 杨玉环体型
- 黄菊花的功效与作用,红菊花茶的功效与作用
- 蒲瓜栽培技术及药用价值