使用Node.js与Express构建RESTful API

💖 博客主页:瑕疵的CSDN主页
💻 Gitee主页:瑕疵的gitee主页
🚀 文章专栏:《热点资讯》

使用Node.js与Express构建RESTful API

    • 1 引言
    • 2 Node.js与Express简介
    • 3 安装Node.js与Express
    • 4 创建Express项目
    • 5 创建API路由
    • 6 数据存储
    • 7 身份验证与授权
    • 8 错误处理
    • 9 部署应用
    • 10 测试API
    • 11 总结
    • 12 参考资料

1 引言

Node.js是一个开放源代码、跨平台的JavaScript运行环境,用于开发服务器端和网络应用。Express是Node.js的一个流行框架,它简化了构建Web应用和API的过程。本文将详细介绍如何使用Node.js与Express框架来构建一个RESTful API。
一张展示使用Node.js与Express构建RESTful API的流程图,包括安装Node.js与Express、创建Express项目、创建API路由、数据存储、身份验证与授权、错误处理以及部署应用等内容。

2 Node.js与Express简介

Node.js允许使用JavaScript编写服务器端代码,Express则为开发者提供了丰富的特性,如路由、中间件、错误处理等,使开发过程更加简单快捷。

3 安装Node.js与Express

首先,确保你的计算机上已安装了Node.js,然后安装Express。

npm install express

4 创建Express项目

使用Express创建一个新的项目。

node-rest-api/
├── package.json
├── package-lock.json
├── node_modules/
├── .gitignore
├── README.md
├── app.js
└── routes/└── api.js

编辑 app.js 文件来初始化Express应用。

const express = require('express');
const app = express();app.use(express.json()); // 中间件解析JSON请求体const PORT = process.env.PORT || 3000;app.listen(PORT, () => {console.log(`Server running on port ${PORT}`);
});

5 创建API路由

创建一个API路由来处理HTTP请求。

// routes/api.js
const express = require('express');
const router = express.Router();// GET 请求示例
router.get('/', (req, res) => {res.status(200).json({ message: 'Welcome to our API!' });
});module.exports = router;

app.js 中使用这个路由。

const apiRoutes = require('./routes/api');app.use('/api', apiRoutes);

6 数据存储

使用内存存储来模拟数据持久化。

let items = [{ id: 1, name: 'Item One' },{ id: 2, name: 'Item Two' },
];router.get('/items', (req, res) => {res.json(items);
});router.post('/items', (req, res) => {const newItem = req.body;items.push(newItem);res.status(201).json(newItem);
});

7 身份验证与授权

使用JSON Web Tokens (JWT)来进行身份验证。

npm install jsonwebtoken
// routes/api.js
const jwt = require('jsonwebtoken');
const secretKey = 'yourSecretKey';function authenticateToken(req, res, next) {const authHeader = req.headers['authorization'];const token = authHeader && authHeader.split(' ')[1];if (token == null) return res.sendStatus(401);jwt.verify(token, secretKey, (err, user) => {if (err) return res.sendStatus(403);req.user = user;next();});
}router.use(authenticateToken);

8 错误处理

添加错误处理中间件来捕获和处理错误。

app.use((err, req, res, next) => {console.error(err.stack);res.status(500).send('Something broke!');
});

9 部署应用

可以使用Heroku或其他云服务提供商来部署你的Node.js应用。

git push heroku master

10 测试API

使用Postman或curl命令来测试API。

curl --location --request POST 'http://localhost:3000/api/items' \
--header 'Content-Type: application/json' \
--data-raw '{"name":"NewItem"}'

11 总结

通过本文,我们介绍了如何使用Node.js与Express框架来构建RESTful API,包括安装Node.js与Express、创建Express项目、创建API路由、数据存储、身份验证与授权、错误处理以及部署应用。掌握了这些基础知识后,你可以开始构建自己的RESTful API了。

12 参考资料

  • [1] Express.js Documentation. (2024). Expressjs.com. Retrieved from [Express.js文档链接]

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

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

相关文章

Server - 配置 HuggingFace 工程数据 Transformers-CLI 格式与 Huggingface-CLI 格式的差别

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/141140498 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Huggin…

【机器学习(十九)】零代码开发之随机森林(Random Forest,RF)算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理(一)定义(二)袋外数据 三、随机森林的优缺点(一)优点(二)缺点 四、随机森林分类任务实现(一)数据加载(二&…

天地图实现海量聚合marker--uniapp后端详细实现

本文章详细的讲解了前后端代码来 实现uniapp天地图功能的实现 以及 后端海量数据的聚合查询 和网格算法实现思路。 并对当数据量增加和用户频繁请求接口时可能导致服务器负载过高做了前后端优化。 前端uniapp: 实现了天地图的行政区划边界/地图切换/比例尺/海量数…

数据结构预备知识---Java集合框架、List接口、包装类、装箱拆箱和泛型

文章目录 Java集合框架List接口包装类 和 装箱、拆箱泛型 Java集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes .其主要表现为将多个元素 element 置于一个…

Oracle自动处理表空间不足脚本

关注过我的朋友们应该知道我分享过一些常用的监控脚本,其中最常用的就是监控表空间使用率的脚本,具体可以参考如下链接​; oracle常用监控脚本(纯干货,没有EMCC,ZABBIX也不怕)_oracle 监控及日常处理脚本-…

JavaEE企业级开发技术-利用Mybatis完成CRUD

参考书籍《JavaEE企业级开发技术》-黑马程序员 利用Mybatis框架实现客户&#xff08;银行账户&#xff09;信息&#xff08;tb_cust:id\cname\csex\cbirth\cfavs\ctel\caddr&#xff09;的查询&#xff0c;新增&#xff0c;更新及删除的功能。 pom.xml <?xml version&qu…

解析孤独症早期症状表现,早发现早干预

孤独症&#xff0c;作为一种神经发育障碍性疾病&#xff0c;给众多家庭带来了极大的困扰。在孩子成长过程中&#xff0c;早期发现孤独症的症状并及时进行干预&#xff0c;对其未来的成长与发展起着至关重要的作用。 于孤独症早期&#xff0c;在社交方面常常会呈现出一些显著的症…

基于springboot+vue实现的免费体育馆场地预约系统 (源码+L文+ppt)4-099

基于springbootvue实现的免费体育馆场地预约系统 &#xff08;源码L文ppt&#xff09;4-099 4.1 系统总体结构设计 本系统是基于B/S架构的网站系统&#xff0c;分为系统前台和系统后台&#xff0c;前台主要是提供给注册用户和未注册登录的游客使用的&#xff0c;包括首页、场馆…

问:SQL中的通用函数及用法?

SQL函数是在SQL语句中使用的预定义的计算工具&#xff0c;可以对一列数据进行操作并返回一个单一的结果。这些函数大致可以分为两类&#xff1a;Aggregate函数和Scalar函数。Aggregate函数对一组值执行计算&#xff0c;并返回单个值&#xff0c;如求和、平均值、最大值和最小值…

构建简单的梯度提升决策树(GBDT)模型:MATLAB 实现详解

梯度提升决策树&#xff08;Gradient Boosting Decision Trees&#xff0c;GBDT&#xff09;是一种强大的集成学习方法&#xff0c;广泛用于回归和分类任务。GBDT 的思想是通过串联多个弱学习器&#xff08;通常是决策树&#xff09;&#xff0c;逐步优化预测残差&#xff0c;从…

文案语音图片视频管理分析系统-视频矩阵

文案语音图片视频管理分析系统-视频矩阵 1.产品介绍 产品介绍方案 产品名称&#xff1a; 智驭视频矩阵深度分析系统&#xff08;SmartVMatrix&#xff09; 主要功能&#xff1a; 深度学习驱动的视频内容分析多源视频整合与智能分类高效视频检索与编辑实时视频监控与异常预警…

[LeetCode] 39. 组合总和

题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以…

夯实根基之MySql从入门到精通(一)

夯实根基之MySql从入门到精通&#xff08;一&#xff09; 引言1. 使用MySQL数据库和表2. MySql 数据类型2.1. 数字类型2.2. 日期和时间类型2.3. 字符串类型2.4. JSON类型2.5. 其他类型 3. MySql运算符3.1. 数学运算符3.2.比较运算符3.3.逻辑运算符3.4. 位运算符3.5.字符串运算符…

openlayers 封装加载本地geojson数据 - vue3

Geojson数据是矢量数据&#xff0c;主要是点、线、面数据集合 Geojson数据获取&#xff1a;DataV.GeoAtlas地理小工具系列 实现代码如下&#xff1a; import {ref,toRaw} from vue; import { Vector as VectorLayer } from ol/layer.js; import { Vector as VectorSource } fr…

OpenCV图像处理方法:腐蚀操作

腐蚀操作 前提 图像数据为二值的&#xff08;黑/白&#xff09; 作用 去掉图片中字上的毛刺 显示图片 读取一个图像文件&#xff0c;并在一个窗口中显示它。用户可以查看这个图像&#xff0c;直到按下任意键&#xff0c;然后程序会关闭显示图像的窗口 # cv2是OpenCV库的P…

【运维心得】U盘启动安装Dell服务器踩坑指南

目录 第一坑&#xff1a;没有键盘选择 第二坑&#xff1a;没有修改mount路径 最近碰到一台Dell服务器R720需要重新安装centos操作系统&#xff0c;由于之前已经配置好了Raid&#xff0c;这里就节省了配置磁盘的步骤。 以前都是通过光盘安装的&#xff0c;考虑到R720是支持U盘…

RAGChecker:显著超越RAGAS,一个精细化评估和诊断 RAG 系统的创新框架

RAG应用已经是当下利用大模型能力的典型应用代表&#xff0c;也获得了极大的推广&#xff0c;各种提升RAG性能的技术层出不穷。然而,如何全面、准确地评估 RAG 系统一直是一个挑战。传统评估方法存在诸多局限性:无法有效评估长文本回复、难以区分检索和生成模块的错误来源、与人…

Jmeter自动化实战

一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…

JDK的下载

目录 JDK官网 Windows Ubantu 1.安装JDK 2.确定JDK版本 卸载OpenJDK Centos 1.下载JDK 2.安装JDK 3.验证JDK JDK官网 官网网址&#xff1a;Java Downloads | Oracle Windows 双击运⾏exe⽂件, 选择安装⽬录, 直⾄安装完成 Ubantu 1.安装JDK 更新软件包 sudo apt u…

【YOLO 系列】基于YOLO的工业自动化轴承缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

前言 轴承作为机械设备中的关键部件&#xff0c;其性能直接影响到设备的稳定性和寿命。轴承缺陷的早期检测对于预防设备故障、减少维护成本和提高生产效率至关重要。然而&#xff0c;传统的轴承缺陷检测方法往往依赖于人工检查&#xff0c;这不仅效率低下&#xff0c;而且容易…