随着互联网的发展,越来越多的应用程序需要通过 API 进行交互。API 微服务是一种将应用程序拆分成小的、独立的服务的方法,这些服务可以独立部署和扩展。在本文中,我们将使用 Express.js 创建一个独立的 API 微服务,以便更好地理解这种服务的工作原理。
Express.js 简介
Express.js 是 Node.js 的一个 Web 框架,它提供了许多有用的功能,例如路由、中间件、模板引擎等。它的设计理念是简单、灵活和易于扩展。
创建一个基本的 Express.js 应用程序
首先,我们需要安装 Node.js 和 Express.js。
- -- ------- ---- ------- ------- ------ - -- ---------- --- ------- ------- ------
然后,我们可以创建一个基本的 Express.js 应用程序。创建一个名为 app.js
的文件,然后添加以下代码:
----- ------- - ------------------- ----- --- - ---------- ------------ ----- ---- -- - --------------- --------- --- ---------------- -- -- - ---------------- --------- -- ---- -------- ---
上面的代码创建了一个 Express.js 应用程序,并将其监听在端口 3000 上。当用户访问根路径时,它将返回一个简单的字符串。
现在,我们可以使用以下命令启动应用程序:
---- ------
然后,在浏览器中访问 http://localhost:3000
,您应该可以看到 "Hello World!" 的消息。
创建一个 API 微服务
现在,我们可以将我们的 Express.js 应用程序转换为 API 微服务。我们将添加一些路由和中间件,以便我们可以通过 API 进行交互。
首先,我们需要安装一些额外的包:
--- ------- ----------- ---- ------
body-parser
是一个 Express.js 中间件,用于解析请求正文。cors
是一个 Express.js 中间件,用于配置跨域请求。
然后,我们可以修改我们的 app.js
文件,以添加一些路由和中间件。
----- ------- - ------------------- ----- ---------- - ----------------------- ----- ---- - ---------------- ----- --- - ---------- --------------------------- ---------------- ------------ ----- ---- -- - --------------- --------- --- --------------------- ----- ---- -- - ----- ----- - - - --- -- ----- ----- -- -- - --- -- ----- ----- -- -- - --- -- ----- ----- -- -- -- ---------------- --- ---------------------- ----- ---- -- - ----- ---- - --------- ------- - -- --------------- --- ---------------- -- -- - ---------------- --------- -- ---- -------- ---
上面的代码添加了两个新的路由。/api/items
路由返回一个包含三个项目的 JSON 数组。/api/items
路由使用 POST
方法,将一个新项目添加到数组中,并返回该项目的 JSON 表示形式。
现在,我们可以使用以下命令启动应用程序:
---- ------
然后,在浏览器中访问 http://localhost:3000/api/items
,您应该可以看到一个包含三个项目的 JSON 数组。
结论
在本文中,我们学习了如何使用 Express.js 创建一个独立的 API 微服务。我们了解了 Express.js 的基本概念和用法,并学习了如何添加路由和中间件。我们还学习了如何使用 body-parser
和 cors
中间件,以便更好地处理请求。
希望本文对您有所帮助,并能为您在创建 API 微服务时提供指导。下面是完整的示例代码:
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6724fb5a2e7021665e1642f7