微服务规模化实践与原则
1. Swagger与HAL技术介绍
在微服务领域,有两项不同的技术——Swagger和HAL,它们都致力于将某些设想变为现实,且都值得深入研究。
1.1 Swagger
Swagger 允许用户描述 API,进而生成美观的 Web UI。借助这个 UI,用户能通过 Web 浏览器查看 API 文档并与之交互。执行请求的功能十分实用,例如可以定义 POST 模板,明确服务器期望接收的内容类型。
要实现这些功能,Swagger 要求服务暴露一个符合 Swagger 格式的边车文件。Swagger 为不同语言提供了众多库来实现这一功能。以 Java 为例,可对与 API 调用匹配的方法添加注解,系统会自动生成所需文件。
Swagger 能为终端用户带来良好的体验,但在超媒体核心的渐进式探索概念方面作用有限。不过,它仍是展示服务文档的不错方式。
1.2 HAL 与 HAL 浏览器
超文本应用语言(HAL)本身是一种描述超媒体控件标准的规范。超媒体控件能让客户端以比其他集成技术更松散的耦合方式逐步探索 API,从而使用服务功能。
若采用 HAL 的超媒体标准,不仅能使用大量用于消费 API 的客户端库(撰写本文时,HAL 维基列出了支持多种不同语言的 50 个库),还能使用 HAL 浏览器,通过 Web 浏览器探索 API。
与 Swagger 类似,HAL 的 UI 不仅可作为实时文档,还能对服务本身执行调用。不过,执行调用的流畅度稍逊一筹。Swagger 可定义模板来发起 POST 请求等操作,而使用 HAL 时则需用户自行处理更多细