【Node.js从基础到高级运用】十一、构建RESTful API

在本篇博客中,我们将综合之前讨论的内容,深入探索如何使用Node.js构建一个RESTful API。我们将重点讨论设计合理的API端点,展示如何通过代码实现这些端点,并指导如何使用Postman测试我们的API,确保其按预期工作。

前提条件

  • Node.js和npm已安装
  • 基本的JavaScript知识
  • 理解REST原则
  • 安装Postman以测试API

步骤1:项目初始化与Express安装

首先,创建项目目录并初始化Node.js项目:

mkdir my-rest-api
cd my-rest-api
npm init -y

安装Express框架:

npm install express -D

步骤2:设计合理的API端点

合理设计API端点是创建RESTful服务的关键。端点应该清晰、直观且专注于资源,同时使用适当的HTTP方法表示操作。

实例端点设计:

获取所有书籍: GET /books
获取单本书籍: GET /books/:id
添加书籍: POST /books
更新书籍: PUT /books/:id
删除书籍: DELETE /books/:id

步骤3:实现API端点

在你的项目中创建一个index.js文件,并开始编写代码来实现这些API端点。让我们扩展我们的API,以支持CRUD操作。

定义一些假数据作为数据库

let books = [{ id: 1, title: 'JavaScript高级程序设计', author: 'Nicholas C. Zakas' },{ id: 2, title: 'Node.js实战', author: 'Mike Cantelon, Marc Harter, T.J. Holowaychuk, Nathan Rajlich' },// 添加更多书籍...
];

添加路由

// 获取所有书籍
app.get('/books', (req, res) => {res.json(books);
});// 通过ID获取单本书
app.get('/books/:id', (req, res) => {const book = books.find(b => b.id === parseInt(req.params.id));if (!book) res.status(404).send('找不到该书籍');res.json(book);
});// 添加一本书(示例未包括实际数据接收和验证逻辑)
app.post('/books', (req, res) => {// 添加书籍到books数组// 发送回新增书籍的JSON
});// 更新书籍(示例未包括实际数据更新逻辑)
app.put('/books/:id', (req, res) => {// 查找并更新书籍信息// 发送回更新后的书籍JSON
});// 删除书籍
app.delete('/books/:id', (req, res) => {books = books.filter(b => b.id !== parseInt(req.params.id));res.send('书籍已删除');
});

使用Body-Parser处理POST和PUT请求

要处理JSON格式的请求体数据,我们需要安装并使用body-parser中间件:

npm install body-parser -D

然后,在你的index.js文件中添加以下代码来引入并使用body-parser

const bodyParser = require('body-parser');// 使用body-parser中间件
app.use(bodyParser.json());

这允许你通过req.body访问POST和PUT请求中的JSON数据。

完整示例

const express = require('express');
const bodyParser = require('body-parser');const app = express();
const port = 3000;let books = [{ id: 1, title: 'JavaScript高级程序设计', author: 'Nicholas C. Zakas' },{ id: 2, title: 'Node.js实战', author: 'Mike Cantelon, Marc Harter, T.J. Holowaychuk, Nathan Rajlich' },
];app.use(bodyParser.json());app.get('/books', (req, res) => {res.status(200).json(books);
});app.get('/books/:id', (req, res) => {const book = books.find(b => b.id === parseInt(req.params.id));if (!book) return res.status(404).send('书籍未找到');res.status(200).json(book);
});app.post('/books', (req, res) => {const book = {id: books.length + 1,title: req.body.title,author: req.body.author,};books.push(book);res.status(201).send(book);
});app.put('/books/:id', (req, res) => {let book = books.find(b => b.id === parseInt(req.params.id));if (!book) return res.status(404).send('书籍未找到');book.title = req.body.title || book.title;book.author = req.body.author || book.author;res.status(200).send(book);
});app.delete('/books/:id', (req, res) => {books = books.filter(b => b.id !== parseInt(req.params.id));res.status(204).send();
});app.listen(port, () => {console.log(`服务器运行在 http://localhost:${port}`);
});

步骤4:使用Postman测试API

测试是确保我们的API按预期工作的重要步骤。使用Postman,我们可以发送请求到我们的API,并查看响应。

1. 打开Postman并创建一个新的请求。

2. 根据需要测试的操作选择相应的HTTP方法,并输入端点URL。

例如,要测试获取所有书籍的端点,选择GET方法并输入http://localhost:3000/books
在这里插入图片描述

3. 发送POST请求

在这里插入图片描述
查看结果:
在这里插入图片描述

4. 发送PUT请求

在这里插入图片描述
查看修改结果:
在这里插入图片描述

总结

本篇博客全面介绍了使用Node.js和Express框架构建RESTful API的过程。从项目的初始化开始,步骤包括了设计直观且遵循REST原则的API端点,实现CRUD操作,到使用Postman工具测试API确保其按预期工作。我们通过实例学习了如何创建、读取、更新、和删除资源(书籍)的端点,以及如何通过Postman发送请求并检查响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫(9)之requests模块

1、获取动态加载的数据 1、在开发者工具中查看动态数据 找到csdn的门户的开发者工具后到这一页面。 2、加载代码 import requests headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36…

如何在Linux Archcraft中配置SSH服务并结合内网穿透实现远程连接

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 Archcraft是一个基于Arch Linux的Linux发行版,它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。 C…

【Python】科研代码学习:十一 Optimization (Optimizer, Scheduler)

【Python】科研代码学习:十一 Optimization [Optimizer, Schedule] Optimizer 前置知识优化器在 torch 中的调用优化器在 transformers 中的调用AdamW 优化器 Scheduler 前置知识调度器在 transformers 中的调用 Optimizer 前置知识 什么是 Optimizer 优化器&#…

2024考研计算机考研复试-每日重点(第十九期)

公众号“准研计算机复试”,超全大佬复试资料,保姆级复试,80%的题目都是上岸大佬提供的。 研宝们,App更新啦! 操作系统: 10.★什么是中断? 中断是指计算机运行过程中,出现某些意外时…

android MMKV数据持久化缓存集合

前言 最近在使用mmkv缓存的时候 发现没有集合缓存 非常不方便 自己写一个方法 MMKV public class MmkvUtils {private MmkvUtils() {throw new UnsupportedOperationException("u cant instantiate me...");}public static void init() {MMKV.initialize(LeoUtils…

R语言lavaan结构方程模型(SEM)实践技术应用

基于R语言lavaan程序包,通过理论讲解和实际操作相结合的方式,由浅入深地系统介绍结构方程模型的建立、拟合、评估、筛选和结果展示的全过程。我们筛选大量经典案例,这些案例来自Nature、Ecology、Ecological Applications、Journal of Ecolog…

Linux动态追踪——ftrace

目录 摘要 1 初识 1.1 tracefs 1.2 文件描述 2 函数跟踪 2.1 函数的调用栈 2.2 函数调用栈 2.3 函数的子调用 3 事件跟踪 4 简化命令行工具 5 总结 摘要 Linux下有多种动态追踪的机制,常用的有 ftrace、perf、eBPF 等,每种机制适应于不同的场…

分享一个可以查看进程虚拟内存占用的 shell 脚本

分享一个可以查看进程虚拟内存占用的 shell 脚本 来源:https://gceasy.io/gc-recommendations/long-pause-solution.jsp 这里命名为 show_process_swap.sh #!/bin/bash # Get current swap usage for all running processes # Erik Ljungstrom 27/05/2011 # Mo…

Windows C++ 使用WinAPI实现RPC

demo下载地址:https://download.csdn.net/download/2403_83063732/88958730 1、创建IDL文件以及acf文件(创建helloworld.idl helloworld.acf) 其中IDL文件: import "oaidl.idl"; import "ocidl.idl"; [ …

嵌入式教学实验箱_操作教程:2-26 交通灯控制实验

一、实验目的 掌握GPIO引脚配置方法和定时器控制LED的原理,并实现交通灯的闪烁控制。 二、实验原理 StarterWare StarterWare是一个免费的软件开发包,它包含了示例应用程序。StarterWare提供了一套完整的GPIO寄存器配置接口,简化了开发步…

缓存把我坑惨了..

故事 春天,办公室外的世界总是让人神往的,小猫带着耳机,托着腮帮,望着外面美好的春光神游着… 一声不和谐的座机电话声打破这份本该属于小猫的宁静,“hi,小猫,线上有个客户想购买A产品规格的商…

【开发工具学习_Xshell介绍与安装】

开发工具学习_Xshell介绍与安装 开发工具学习_Xshell介绍与安装Xshell介绍Xshell安装 开发工具学习_Xshell介绍与安装 Xshell介绍 Xshell [1]是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主…