在现代的 Web 开发中,RESTful API 是不可或缺的一部分。它们是构建 Web 应用程序和移动应用程序的基石,为客户端应用程序提供了可靠和可扩展的接口。
本文将介绍如何使用 Express.js 和 PostgreSQL 构建 RESTful API。我们将深入探讨如何设置和配置 Express.js 和 PostgreSQL,以及如何编写可扩展和可维护的 RESTful API。
准备工作
在开始之前,您需要安装以下软件:
- Node.js 和 npm
- PostgreSQL 数据库
您还需要具备以下技能:
- 基本的 JavaScript 和 Node.js 编程知识
- 基本的 SQL 知识
设置 Express.js 和 PostgreSQL
首先,我们需要设置 Express.js 和 PostgreSQL。我们将使用以下软件包:
- express:用于创建 Web 服务器和处理 HTTP 请求和响应。
- pg:用于连接和操作 PostgreSQL 数据库。
- body-parser:用于解析 HTTP 请求正文中的 JSON 数据。
您可以使用以下命令安装这些软件包:
npm install express pg body-parser
接下来,我们将创建一个名为 app.js
的文件,并添加以下代码:
// javascriptcn.com 代码示例 const express = require('express'); const bodyParser = require('body-parser'); const { Pool } = require('pg'); const app = express(); const port = 3000; const pool = new Pool({ user: 'your_username', host: 'localhost', database: 'your_database', password: 'your_password', port: 5432, }); app.use(bodyParser.json()); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(port, () => { console.log(`Server listening on port ${port}`); });
在这个文件中,我们创建了一个 Express 应用程序,并将其绑定到端口 3000
。我们还创建了一个 PostgreSQL 连接池,该连接池连接到本地 PostgreSQL 数据库。最后,我们添加了一个处理 HTTP GET 请求的路由,并在服务器启动时打印一条消息。
编写 RESTful API
现在,我们已经设置了 Express.js 和 PostgreSQL,我们可以开始编写 RESTful API。在本节中,我们将创建一个简单的 To-Do 应用程序,并为其编写 RESTful API。
创建数据库表
首先,我们需要创建一个名为 todos
的数据库表,该表将存储 To-Do 项。我们可以使用以下 SQL 命令创建该表:
CREATE TABLE todos ( id SERIAL PRIMARY KEY, title TEXT NOT NULL, completed BOOLEAN DEFAULT false );
在这个表中,我们定义了三个列:
id
:一个自增的整数,作为主键。title
:一个文本列,用于存储 To-Do 项的标题。completed
:一个布尔列,用于指示 To-Do 项是否已完成。
创建 RESTful API
接下来,我们将为 To-Do 应用程序编写 RESTful API。我们将创建以下路由:
GET /todos
:获取所有 To-Do 项。POST /todos
:创建一个新的 To-Do 项。GET /todos/:id
:获取特定 ID 的 To-Do 项。PUT /todos/:id
:更新特定 ID 的 To-Do 项。DELETE /todos/:id
:删除特定 ID 的 To-Do 项。
我们可以使用以下代码实现这些路由:
// javascriptcn.com 代码示例 // 获取所有 To-Do 项 app.get('/todos', async (req, res) => { try { const { rows } = await pool.query('SELECT * FROM todos'); res.json(rows); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } }); // 创建一个新的 To-Do 项 app.post('/todos', async (req, res) => { const { title } = req.body; if (!title) { return res.status(400).send('Title is required'); } try { const { rows } = await pool.query( 'INSERT INTO todos (title) VALUES ($1) RETURNING *', [title], ); res.json(rows[0]); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } }); // 获取特定 ID 的 To-Do 项 app.get('/todos/:id', async (req, res) => { const { id } = req.params; try { const { rows } = await pool.query( 'SELECT * FROM todos WHERE id = $1', [id], ); if (rows.length === 0) { return res.status(404).send('Not Found'); } res.json(rows[0]); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } }); // 更新特定 ID 的 To-Do 项 app.put('/todos/:id', async (req, res) => { const { id } = req.params; const { title, completed } = req.body; try { const { rows } = await pool.query( 'UPDATE todos SET title = $1, completed = $2 WHERE id = $3 RETURNING *', [title, completed, id], ); if (rows.length === 0) { return res.status(404).send('Not Found'); } res.json(rows[0]); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } }); // 删除特定 ID 的 To-Do 项 app.delete('/todos/:id', async (req, res) => { const { id } = req.params; try { const { rows } = await pool.query( 'DELETE FROM todos WHERE id = $1 RETURNING *', [id], ); if (rows.length === 0) { return res.status(404).send('Not Found'); } res.json(rows[0]); } catch (err) { console.error(err); res.status(500).send('Internal Server Error'); } });
在这个代码中,我们使用了 PostgreSQL 连接池执行 SQL 命令,并根据结果发送 HTTP 响应。我们还添加了一些错误处理,以确保我们的 API 可靠和可扩展。
测试 API
现在,我们已经编写了 RESTful API,我们可以使用 Postman 或类似的工具测试它们。我们可以使用以下请求测试我们的 API:
GET http://localhost:3000/todos
:获取所有 To-Do 项。POST http://localhost:3000/todos
:创建一个新的 To-Do 项。GET http://localhost:3000/todos/:id
:获取特定 ID 的 To-Do 项。PUT http://localhost:3000/todos/:id
:更新特定 ID 的 To-Do 项。DELETE http://localhost:3000/todos/:id
:删除特定 ID 的 To-Do 项。
我们可以使用以下 JSON 数据测试 POST
和 PUT
请求:
{ "title": "Buy milk", "completed": false }
总结
本文介绍了如何使用 Express.js 和 PostgreSQL 构建 RESTful API。我们学习了如何设置和配置 Express.js 和 PostgreSQL,以及如何编写可扩展和可维护的 RESTful API。我们还创建了一个简单的 To-Do 应用程序,并为其编写了 RESTful API。
通过学习本文,您应该能够:
- 设置和配置 Express.js 和 PostgreSQL。
- 编写可扩展和可维护的 RESTful API。
- 使用 PostgreSQL 连接池执行 SQL 命令。
- 使用 Postman 或类似的工具测试 API。
希望本文对您有所帮助!
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6565b845d2f5e1655def0953