什么是 RESTful API
RESTful API 是一种基于 HTTP 协议实现的 API 设计风格,它遵循资源(Resource)为中心的设计原则,将每个资源对应一个固定的 URI,而各种操作则使用 HTTP 方法来表示,例如 GET、POST、PUT、DELETE 等。RESTful API 设计的一个重要特点是其无状态性(Stateless),即服务器不需要记录客户端的上下文信息,客户端提交的每个请求都需要包含所有必要的信息。
为什么要使用 hapi.js 和 swagger
hapi.js 是一个用于构建 Web 应用的 Node.js 框架,它的特点是易扩展、插件化、强大的路由和插件系统以及可靠的插件测试。hapi.js 的插件系统可以让开发者按需使用各种组件,从而更好地控制应用程序的规模和质量。
Swagger 是一种开源的接口规范和文档工具,它能够帮助开发人员更加方便地设计、构建、文档化和测试 RESTful API。Swagger 可以自动生成 RESTful API 的 API 文档,并提供在线试用工具,使得客户端可以快速了解、使用、测试和调试 RESTful API。
将 hapi.js 和 Swagger 结合在一起,可以帮助我们更加高效、灵活地设计和构建 RESTful API,并且可以方便地生成和维护 API 文档。
如何使用 hapi.js 和 swagger 构建 RESTful API
下面我们来通过一个实例,介绍如何使用 hapi.js 和 Swagger 构建一个简单的 RESTful API,并且使用 Swagger 自动生成 API 文档。
安装依赖
我们首先需要安装以下依赖:
npm i hapi boom inert vision hapi-swagger --save
hapi
:hapi.js 框架本身。boom
:hapi.js 的 HTTP 异常处理插件。inert
:hapi.js 的文件和目录处理插件。vision
:hapi.js 的模板处理插件。hapi-swagger
:Swagger 与 hapi.js 集成插件。
创建 hapi.js 应用程序
我们可以创建一个名为 app.js
的文件,然后编写以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- --- - --------------------- ----- ------ - ------------------------ ----- ----- - ----------------------- ----- ----------- - ------------------------ ----- ---- - -------------------------- -- -- ------- ------ ----- ------ - ------------- ----- ----- ----- ----------- --- -- -- ------- ---------- ----- ------- - --- -- -- ------- ---- ----- -------- ------- - ----- ------------------------- ----- --------------- ------------------- ------- --- --------------------- - -- -- ------- ---- -------------------------------- ----- -- - ----------------- ---------------- --- -- -- ------- ------ -------------- - - ------ ------ --
创建数据模型
我们可以创建一个名为 users.js
的文件,然后编写以下代码:
-- -------------------- ---- ------- --- ----- - - - --- -- ----- ------ ---- -- -- - --- -- ----- -------- ---- -- -- - --- -- ----- -------- ---- -- -- - --- -- ----- ------ ---- -- -- -- -- ------ ----- ------- - -- -- - ------ ------ -- -- ------ ----- -------- - ---- -- - ------ ----------------- -- - ------ ------- --- ------------- --- -- -- ------ ----- ------ - ------ -- - ----- ----- - ----------------- - -- ----- ------- - - --- ------ ------- -- ----- - ---------- --------- ------ -------- -- -- ------ ----- ---------- - ---- ----- -- - --- ----------- - ----- ----- - ---------------- -- - -- -------- --- ------------- - ----------- - - -------- ------- -- ------ ------------ - ------ ----- --- ------ ------------ -- -- ------ ----- ---------- - ---- -- - ----- ----------- - ------------- ----- - ------------------- -- - ------ ------- --- ------------- --- ------ ------------ -- -- ------ -------------- - - -------- --------- ------- ----------- ---------- --
创建路由
我们可以创建一个名为 users.routes.js
的文件,然后编写以下代码:
-- -------------------- ---- ------- ----- --- - --------------------- ----- ----- - ---------------------- ----- ---- - ---------------------- ----- -------------- - --------- -- -- - ----- -------- - ---------------- ------ --------------------- -- ----- --------------- - --------- -- -- - ----- - -- - - --------------- ----- ---- - ------------------- -- ------- - ----- ------------------- --- --------- - ------ ----------------- -- ----- ------------- - --------- -- -- - ----- ---------------- - ------------ ----- ------------------------------- ---- ----------------------------------------- --- ----- - ------ ----- - - ------------------------------------------ - ----------- ------ ------------- ----- --- -- ------- - ----- ------------------- - ----------- --- --- - ----- ------- - -------------------- ------ ------------------------------ -- ----- ----------------- - --------- -- -- - ----- - -- - - --------------- ----- ---------------- - ------------ ----- -------------------- ---- ------------------------------ --- ----- - ------ ----- - - ------------------------------------------ - ----------- ------ ------------- ----- --- -- ------- - ----- ------------------- - ----------- --- --- - ----- ----------- - -------------------- ------- -- -------------- - ----- ------------------- --- --------- - ------ ------------------------ -- ----- ----------------- - --------- -- -- - ----- - -- - - --------------- ----- ----------- - --------------------- -- -------------- - ----- ------------------- --- --------- - ------ ------------------------ - ----- ----------- - - - ------- ------ ----- --------- -------- --------------- -------- - ------------ ---- --- -------- ----- ------- --------- -- -- - ------- ------ ----- -------------- -------- ---------------- -------- - ------------ ---- - ---- -- ----- ----- ------- --------- --------- - ------- ------------ --- ----------------------------------------- --- -- -- -- - ------- ------- ----- --------- -------- -------------- -------- - ------------ ------- - --- ------- ----- ------- --------- --------- - -------- ------------ ----- ------------------------------- ---- ----------------------------------------- --- -- -- -- - ------- ------ ----- -------------- -------- ------------------ -------- - ------------ ------- - ---- -- ----- ----- ------- --------- --------- - ------- ------------ --- ----------------------------------------- --- -------- ------------ ----- -------------------- ---- ------------------------------ ---------- -- -- -- - ------- --------- ----- -------------- -------- ------------------ -------- - ------------ ------- - ---- -- ----- ----- ------- --------- --------- - ------- ------------ --- ----------------------------------------- --- -- -- -- -- -- ---- -------------- - ------------
注册 hapi.js 插件
我们可以将在前面编写的所有内容都导入到名为 index.js
的文件中,然后将 hapi.js 和 Swagger 插件都注册到应用程序中:
-- -------------------- ---- ------- ----- - ------- ----- - - -------------------- ----- ----------- - ----------------------------- ----- ------- - - - ------- --------------------- -------- - ------------ ----- ---------- ------------ -------------- - -- ------ ------- - ------- ------------ -------- - ----- - ------ -------- --- --------------- -------- ------------ -- ----- -- ----- -------- ------------ ----- ------- ----------- -- - ----- ------- ------------ --------------- --- ---------- ----- ------------------ ----- ------------------ ------- - - -- -- ---- -------------------------- -- ------ --------
测试 RESTful API
启动应用程序之后,我们可以使用 Postman 或者浏览器等工具测试 RESTful API。例如:
- 获取所有用户:GET http://localhost:8081/users
- 获取一个用户:GET http://localhost:8081/users/1
- 创建一个用户:POST http://localhost:8081/users,请求体为 JSON 格式:{"name": "Mary", "age": 30}。
- 更新一个用户:PUT http://localhost:8081/users/2,请求体为 JSON 格式:{"name": "Jerry", "age": 21}。
- 删除一个用户:DELETE http://localhost:8081/users/3。
自动生成 API 文档
我们可以访问 http://localhost:8081/docs,查看 Swagger 自动生成的 API 文档。其中,我们可以方便地看到 RESTful API 的各种接口信息和参数要求,还可以在线测试和调试 API。这样,我们就可以更加方便地设计、构建、文档化和测试 RESTful API。
总结
使用 hapi.js 和 Swagger 构建 RESTful API 可以提高编码效率和代码质量,并且可以方便地记录和维护 API 文档。通过以上实例,我们可以更深入地了解 hapi.js 和 Swagger 的使用方法,并且可以在此基础之上进一步探索更加复杂和灵活的 RESTful API 构建方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6469cc53968c7c53b099d2c5