使用 Node.js 和 Express 构建 RESTful API

Node.js 是一个基于 Chrome V8 JavaScript 引擎的 JavaScript 运行环境,它使开发者可以使用 JavaScript 来编写服务器端的应用程序。Express 是一个基于 Node.js 的轻量级 Web 应用框架,常被认为是构建 API 或 Web 应用的标准库之一。在本文中,我们将使用 Node.js 和 Express 构建一个简单的 RESTful API,用于管理一个书籍列表。

1. 环境准备

首先,确保你的开发环境中已经安装了 Node.js。接下来,我们需要创建一个新的 Node.js 项目。

打开终端或命令提示符,执行以下命令来创建一个新的 Node.js 项目:

复制代码
mkdir book-api
cd book-api
npm init -y
2. 安装必要的包

我们需要安装 Express 和一些其他的 npm 包来帮助我们构建 API。

复制代码
npm install express body-parser cors

body-parser 用于解析请求体,cors 用于处理跨域资源共享(CORS)问题。

3. 创建 API

创建一个名为 server.js 的文件,这是我们的主应用程序文件。

server.js 文件内容:
复制代码
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();
app.use(bodyParser.json());
app.use(cors());

let books = [
  {
    id: 1, title: 'Node.js入门', author: '张三' },
  {
    id: 2, title: 'Express实战', author: '李四' },
];

// 获取所有书籍
app.get('/api/books', (req, res) => {
   
  res.json(books);
});

// 添加书籍
app.post('/api/books', (req, res) => {
   
  const book = req.body;
  book.id = books.length + 1;
  books.push(book);
  res.status(201).json(book);
});

// 删除书籍
app.delete('/api/books/:id', (req, res) => {
   
  const id = parseInt(req.params.id);
  books = books.filter(book => book.id !== id);
  res.status(204).send();
});

// 更新书籍信息
app.put('/api/books/:id', (req, res) => {
   
  const id = parseInt(req.params.id);
  const updatedBook = req.body;
  books = books.map(book => (book.id === id ? {
    ...book, ...updatedBook } : book));
  res.json(books.find(book => book.id === id));
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server is running on port ${
     PORT}`));
4. 测试 API

现在我们可以启动我们的服务器,并使用 Postman 或其他 HTTP 客户端工具来测试我们的 API。

启动服务器:

复制代码
node server.js

在浏览器中访问 http://localhost:3000/api/books,你应该可以看到 JSON 格式的书籍列表。

5. 使用 Postman 测试 API

安装并打开 Postman,创建一个新的请求:

  • GET 请求到 http://localhost:3000/api/books,应该返回所有的书籍。
  • POST 请求到 http://localhost:3000/api/books,发送一个 JSON 格式的请求体,例如 { "title": "JavaScript高级程序设计", "author": "高程" },应该返回新添加的书籍。
  • DELETE 请求到 http://localhost:3000/api/books/2,应该返回一个空响应体,表示书籍已被成功删除。
  • PUT 请求到 http://localhost:3000/api/books/1,发送一个 JSON 格式的请求体,例如 { "title": "Node.js实战" },应该返回更新后的书籍。
相关推荐
梦帮科技3 小时前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
Misnice5 小时前
Webpack、Vite、Rsbuild区别
前端·webpack·node.js
Irene199113 小时前
RESTful 前后端传参参数格式总结
restful·参数·格式
h7ml1 天前
淘宝返利软件的跨端同步架构:Java RESTful API+GraphQL满足Web/APP/小程序的多端数据需求
java·架构·restful
毕设源码-朱学姐1 天前
【开题答辩全过程】以 基于Node.js的书籍分享平台设计与实现为例,包含答辩的问题和答案
node.js
前端 贾公子1 天前
Node.js 如何处理 ES6 模块
前端·node.js·es6
wefg11 天前
【Linux】动静态库
linux·运维·restful
周杰伦的稻香1 天前
Hexo搭建教程
java·node.js
毕设源码-钟学长1 天前
【开题答辩全过程】以 基于node.js vue的点餐系统的设计与实现为例,包含答辩的问题和答案
前端·vue.js·node.js
朝朝暮暮an2 天前
Day 2|Node.js 运行机制、模块系统与异步初探
node.js