随着Web 2.0时代的到来,前后端分离的开发模式越来越受到开发者的重视。前后端分离的架构可以使得前端和后端开发职责分离,分工更加明确,提升开发效率。本文将介绍如何基于Express.js构建RESTful API,来支持前后端分离的开发模式。
什么是RESTful API?
RESTful API是一种面向资源设计的API,它基于HTTP协议,使用标准的HTTP动词(例如GET、POST、PUT、DELETE等)对资源进行操作。RESTful API是可伸缩、可扩展、易于寻址、缓存和安全的。
RESTful API有以下几个特点:
- 统一资源标识符(URI)作为资源的唯一定位符;
- 通过HTTP动词对资源进行操作;
- 通过HTTP状态码表示操作结果;
- 使用超链接(HATEOAS)将资源之间的关系显式地体现出来。
Express.js简介
Express.js是一款流行的Node.js Web应用框架,它提供了一组简单易用的API来帮助开发者快速、简单地构建Web应用程序。在Express.js的帮助下,我们可以轻松地将HTTP请求与相应的处理程序进行匹配,从而实现路由、模板引擎、中间件等功能。
基于Express.js构建RESTful API
下面我们将演示如何使用Express.js来构建RESTful API。
安装Express.js
我们首先需要安装Node.js和npm(Node.js的包管理器)。在Node.js安装完成后,可以通过以下命令来安装Express.js。
$ npm install express --save
创建Express.js应用
创建一个文件夹,然后在该文件夹中创建一个名为app.js
的文件,该文件将作为我们的Express.js应用程序的入口点。我们可以使用以下代码来创建一个Express.js应用。
-- -------------------- ---- ------- -- -------------- ----- ------- - ------------------- -- ---------------- ----- --- - ---------- -- ------------- ---------------- -- -- - ------------------- -- ------- -- ------------------------ ---
这个应用将监听3000端口,我们可以使用浏览器或者命令行来访问该应用。
$ node app.js
在浏览器中输入http://localhost:3000
,我们可以看到如下输出。
Cannot GET/
配置路由
在RESTful API中,一个资源通常由一个URI来表示。我们可以通过定义一个或多个路由器来表示我们的资源。在Express.js中,我们可以使用app.get()
、app.post()
、app.put()
和app.delete()
等函数来定义路由器。
下面我们来定义一个简单的GET请求路由器,该路由器将响应一个Hello World消息。
app.get('/', (req, res) => { res.send('Hello, World!'); });
然后我们重新启动应用,访问http://localhost:3000
,我们将看到一个Hello, World!消息。
我们可以定义一个路由器来表示所有的博客文章资源。我们可以使用/articles
URI来表示所有的文章,使用/articles/:id
URI来表示特定文章的ID。
-- -------------------- ---- ------- -- ------ -------------------- ----- ---- -- - -- ------ --- -- ------ ------------------------ ----- ---- -- - ----- -- - -------------- -- ---------- --- -- ---- --------------------- ----- ---- -- - -- ---- --- -- ---- ------------------------ ----- ---- -- - ----- -- - -------------- -- -------- --- -- ---- --------------------------- ----- ---- -- - ----- -- - -------------- -- -------- ---
处理JSON数据
在RESTful API中,数据通常是以JSON格式作为输入和输出的。我们可以使用body-parser
中间件来处理请求的JSON数据。
const bodyParser = require('body-parser'); // 解析JSON数据 app.use(bodyParser.json());
然后我们就可以在路由器函数中访问请求的JSON数据了。
-- -------------------- ---- ------- -- ---- --------------------- ----- ---- -- - ----- ------- - --------- -- ---- --- -- ---- ------------------------ ----- ---- -- - ----- -- - -------------- ----- ------- - --------- -- -------- ---
连接数据库
最后,我们需要将我们的RESTful API连接到数据库来存储和检索数据。我们可以使用mongoose
库来连接和操作MongoDB数据库。
-- -------------------- ---- ------- ----- -------- - -------------------- -- ------------ --------------------------------------------- - ---------------- ----- ------------------- ---- --- -- ------ ----- ------- - ------------------------- - ------ ------- ------- ------- -------- ------ ---
然后我们就可以在路由器函数中使用文章模型来进行数据的保存和检索了。
-- -------------------- ---- ------- -- ------ -------------------- ----- ---- -- - ---------------- ----- --------- -- - -- ----- - -------------------------- - ---- - ------------------- - --- --- -- ------ ------------------------ ----- ---- -- - ----- -- - -------------- -------------------- ----- -------- -- - -- ----- - -------------------------- - ---- - ------------------ - --- --- -- ---- --------------------- ----- ---- -- - ----- ------- - --------- ----- ---------- - --- ----------------- --------------------- ------------- -- - -- ----- - -------------------------- - ---- - ----------------------- - --- --- -- ---- ------------------------ ----- ---- -- - ----- -- - -------------- ----- ------- - --------- ----------------------------- -------- ----- --------------- -- - -- ----- - -------------------------- - ---- - ------------------------- - --- --- -- ---- --------------------------- ----- ---- -- - ----- -- - -------------- ----------------------------- ----- --------------- -- - -- ----- - -------------------------- - ---- - ------------------------- - --- ---
示例代码
完整代码示例请参见以下代码。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- -------- - -------------------- -- ---------------- ----- --- - ---------- -- -------- --------------------------- -- ------------ --------------------------------------------- - ---------------- ----- ------------------- ---- --- -- ------ ----- ------- - ------------------------- - ------ ------- ------- ------- -------- ------ --- -- ------ -------------------- ----- ---- -- - ---------------- ----- --------- -- - -- ----- - -------------------------- - ---- - ------------------- - --- --- -- ------ ------------------------ ----- ---- -- - ----- -- - -------------- -------------------- ----- -------- -- - -- ----- - -------------------------- - ---- - ------------------ - --- --- -- ---- --------------------- ----- ---- -- - ----- ------- - --------- ----- ---------- - --- ----------------- --------------------- ------------- -- - -- ----- - -------------------------- - ---- - ----------------------- - --- --- -- ---- ------------------------ ----- ---- -- - ----- -- - -------------- ----- ------- - --------- ----------------------------- -------- ----- --------------- -- - -- ----- - -------------------------- - ---- - ------------------------- - --- --- -- ---- --------------------------- ----- ---- -- - ----- -- - -------------- ----------------------------- ----- --------------- -- - -- ----- - -------------------------- - ---- - ------------------------- - --- --- -- ------------- ---------------- -- -- - ------------------- -- ------- -- ------------------------ ---
总结
本文介绍了如何基于Express.js构建RESTful API,来支持前后端分离的开发模式。我们通过定义路由器、处理JSON数据和连接数据库来实现了一个基础的RESTful API。通过学习本文,读者可以了解到如何使用Express.js来构建RESTful API,并可以进一步深入研究高级的RESTful API开发技术。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64659d36968c7c53b064bd61