人们对使用各种语言来描述 API 非常感兴趣,通过描述语言可以更容易地编写客户端和服务器文档,甚至生成骨架代码 。一些比较流行、有趣的描述语言包括:
5.2.1 RAML
RAML 是一种 YAML/JSON 语言,可以定义2级成熟度的 API 。它支持可重用模式和特性,通过模式和特性实现功能 API 设计的标准化 。网址:http://raml.org
5.2.2 Swagger
Swagger 是另一种 YAML/JSON 语言,支持定义2级成熟度的 API 。它包含代码生成器、编辑器、 API 文档可视化功能,能够与其他服务集成的 。网址:http://swagger.io
5.2.3 Apiary.io
Apiary.io 是一个协作式的托管站点 。它支持 Markdown 格式的 API 文档,可以围绕设计过程进行社交,并且支持模拟数据的托管实现,以便于在 API 实现之前对其进行测试 。网址:http://apiary.io
5.2.4 Hydra-Cg
Hydra-Cg 是一种超媒体描述语言,通过像 JSON-LD 这样的标准方便地实现数据关联和并其它数据源的交互 。网址:http://www.hydra-cg.com
5.3 实现
有一些用于构建、生成和使用 RESTful 系统的库和框架 。虽然任何 Web 服务器都可以配置成提供 REST API,但有了这些框架、库和环境可以让过程变得更容易 。
以下概述了一些主流的环境:
5.3.1 JAX-RS
JAX-RS 规范为 JEE 环境增加了对 REST 的支持 。网址:https://jax-rs-spec.java.net
5.3.2 Restlet
Restlet API 是构建用于生产和消费 RESTful 系统的 Java API 先行者之一 。它专注于为客户端和服务器生成一些非常干净、强大的 API 。
Restlet Studio 是一个免费工具,能够在 RAML 和基于 swagger 的 API 描述之间进行转换,支持 Restlet、 Node 和 JAX-RS 服务器和客户端的骨架和 Stub 代码 。网址:http://restlet.org
5.3.3 NetKernel
Netkernel 是一个比较有趣的 RESTful 系统 。它基于微内核,是支持各种架构风格环境的代表 。Netkernel 受益于在软件体系结构中采用 Web 的经济属性 。你可以把它想象成“在内部引入 REST” 。虽然任何基于 REST 的系统在外面看起来都一样,但在运行环境内部 NetKernel 看起来也一样 。网址:http://netkernel.org
5.3.4 Play
两个主要的 Scala REST 框架之一 。网址:https://www.playframework.com
5.3.5 Spray
两个主要的 Scala REST 框架之一 。它设计成配合 Akka actor 模型一起工作 。网址:http://spray.io
5.3.6 Express
两个主要的 Node.js REST 框架之一 。网址:http://expressjs.com
5.3.7 hapi
两个主要的 Node.js REST 框架之一 。网址:http://hapijs.com
5.3.8 Sinatra
Sinatra 是一个领域特定语言(DSL),用来在 Ruby 中创建 RESTful 应用程序 。网址:http://www.sinatrarb.com
5.4 客户端
通过浏览器调用 REST API 是可行的,但是还有其它客户端可用于测试和构建面向资源的系统 。
5.4.1 curl
curl 是流行的库和命令行工具之一,支持在各种资源上调用各种协议 。网址:https://curl.haxx.se
5.4.2 httpie
httpie 是一个非常灵活和易用的客户端,支持通过 HTTP 与资源进行交互 。网址:https://httpie.org
5.4.3 Postman
健全的 API 测试需要能够捕获和重播请求,支持各种身份验证和授权方案等功能 。以前的命令行工具允许这样做,但 Postman 是一个较新的桌面应用程序,让这些工作对于开发团队来说变得更容易 。网址:https://www.getpostman.com
6. 书籍
- “RESTful Web APIs”:Leonard Richardson、Mike Amundsen 和 Sam Ruby,2013,O’Reilly 出版社
- “RESTful Web Services Cookbook”:Subbu Allamaraju,2010,O’Reilly 出版社
- “REST in Practice”:Jim Webber、Savas Parastatidis 和 Ian Robinson,2010,O’Reilly 出版社 。中文版《REST实战(中文版)》
- “Restlet in Action” by Jerome Louvel and Thierry Boileau,2011,Manning 出版社
- “Resource-Oriented Architecture Patterns for Webs of Data (Synthesis Lectures on the Semantic Web: Theory and Technology)”:Brian Sletten,2013,Morgan & Claypool
【RESTful 架构基础】
推荐阅读
- 信息技术产业半导体研究报告
- AMD|Intel新CPU专利架构被指1比1复制AMD Zen 真相反转:原来误会一场
- javascrip基础:var,let和const区别在哪里
- 学习爬虫前需要了解哪些基础知识
- 计算机网络基础总结,如果你想成为黑客,那你还不赶紧了解一下
- 最基础的Python知识,学会这些已足够你开始写Python代码了
- Python后端架构演进
- 茶文化中的基础茶叶分类
- 浅谈Nginx服务器的内部核心架构设计
- LNMP架构下各项配置优化总结