使用Node.js+Express开发简单接口

Node.js 和 Express 是非常流行的组合,用于开发快速、高效的 web 服务器和 API。下面是一个基础教程,介绍如何使用 Node.js 和 Express 开发一个简单的 API。

1. 安装 Node.js 和 npm

首先,确保您已经安装了 Node.js 和 npm(Node Package Manager)。可以通过以下命令检查是否已安装:

node -v
npm -v

如果没有安装,请前往 Node.js 官网 下载并安装最新版本。

2. 创建项目目录并初始化

创建一个新的项目目录并初始化一个新的 npm 项目:

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

这将在您的项目目录中创建一个 package.json 文件。

3. 安装 Express

接下来,安装 Express:

npm install express
4. 创建基础服务器

在项目根目录下创建一个 index.js 文件,并添加以下代码以设置一个基本的 Express 服务器:

// 导入express
const express = require('express');
const app = express();
const host = '127.0.0.1';
const port = 3000; // 端口号
// 导入 cors 中间件,并注册,处理跨域问题
const cors = require('cors')
app.use(cors())const itemRoutes = require('./routes/index'); // 引入接口路由
app.use(express.json()); // 为了处理 JSON 数据,我们需要添加 Express 内置的 express.json() 中间件
app.use('/items', itemRoutes);// 启动服务器
app.listen(port, () => {console.log(`Server is running at http://${host}:${port}`);
});

为了防止跨域可以安装一下插件:

npm install cors
6. 创建简单的 RESTful API

我们将创建一个简单的 CRUD(Create, Read, Update, Delete)API 来管理一些示例数据。首先,定义一些示例数据:

创建控制器:在根目录创建 controllers 文件夹及 index.js 文件:

// controllers/index.jslet items = [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' },
];// 获取所有项目
exports.getItems = (req, res) => {res.json(items);
};// 获取单个项目
exports.getItem = (req, res) => {const item = items.find(i => i.id === parseInt(req.params.id));if (!item) return res.status(404).send('Item not found.');res.json(item);
};// 创建新项目
exports.createItem = (req, res) => {const newItem = {id: items.length + 1,name: req.body.name};items.push(newItem);res.status(201).json(newItem);
};// 更新项目
exports.updateItem = (req, res) => {const item = items.find(i => i.id === parseInt(req.params.id));if (!item) return res.status(404).send('Item not found.');item.name = req.body.name;res.json(item);
};// 删除项目
exports.deleteItem = (req, res) => {const itemIndex = items.findIndex(i => i.id === parseInt(req.params.id));if (itemIndex === -1) return res.status(404).send('Item not found.');items.splice(itemIndex, 1);res.status(204).send();
};

创建路由:在根目录创建 routes 文件夹及 index.js 文件:

// routes/index.jsconst express = require('express');
const router = express.Router();
const itemController = require('../controllers/index');router.get('/', itemController.getItems);
router.get('/:id', itemController.getItem);
router.post('/', itemController.createItem);
router.put('/:id', itemController.updateItem);
router.delete('/:id', itemController.deleteItem);module.exports = router;

创建模型:在根目录创建 models 文件夹及 index.js 文件(此示例中不需要模型文件,通常在使用数据库时才需要)

说明:

控制器:负责具体的业务逻辑处理。这里 itemController.js 包含了对 items 数组的 CRUD 操作。
路由:负责定义应用的路由。 itemRoutes.js 中定义了对应的 URL 路径和 HTTP 动词(如 GET、POST 等),并将这些路由映射到控制器的方法。
主服务器文件: index.js 是应用的入口文件,设置中间件和基础路由,并启动服务器。

接口调用:http://127.0.0.1:3000/items

即可获取数据如下:

[{"id": 1,"name": "Item 1"},{"id": 2,"name": "Item 2"},{"id": 3,"name": "Item 3"}
]

接口调用:http://127.0.0.1:3000/items/1

即可获取数据如下:

{"id": 1,"name": "Item 1"
}

至此完成!!!

测试有效!!!感谢支持!!!

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

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

相关文章

乡村振兴的科技创新引领:加强农业科技研发,推广先进适用技术,提高农业生产效率,助力美丽乡村建设

目录 一、引言 二、农业科技研发的重要性 (一)提升农业生产效率 (二)促进农业产业升级 (三)保障粮食安全 三、加强农业科技研发的策略 (一)加大投入力度 (二&…

云渲染动画:C4D如何正确渲染导出动画?

​C4D是一款功能强大的3D建模、动画和渲染软件,在制作动画时,正确的渲染和导出流程至关重要,以确保动画质量和流畅性。 帧率概念 动画就是一幅幅图片连贯起来,30帧/秒,就是一秒出现30张图片一般国外都是30&#xff0c…

数据预处理——调整方差、标准化、归一化(Matlab、python)

对数据的预处理: (a)、调整数据的方差; (b)、标准化:将数据标准化为具有零均值和单位方差;(均值方差归一化(Standardization)) (c)、最值归一化,也称为离差标准化,是对原始数据的…

UKP3D用户定制图框的思路

为用户定制图框,记录以下图框制作方法,便于用户自已修改。 1.轴测图与平面图的图框: 1.1.图框在安装目录下,例如:E:\Program Files (x86)\UKSoft\UKP3d9.2\config\TemplateAndBlock\CADTemplate\ 1.2.配置文件在安装…

LVS/NAT负载均衡实操

添加规则,并做持久操作 1 添加规则 [rootlvs ~]# ipvsadm -A -t 10.36.178.183:80 -s wrr [rootlvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.201:80 -m -w 3 [rootlvs ~]# ipvsadm -a -t 10.36.178.183:80 -r 192.168.65.202:80 -m -w 1[rootlvs ~]# ipvsadm -Ln …

vmmare虚拟机没有被分配ip地址问题

打开任务管理器–>服务–>找到与VM和server相关的服务 发现NAT和DHCP服务被关闭了 尝试启动,报错 尝试一 虚拟网络编辑器点击还原默认设置 尝试二 可以了

浅谈学习数据结构-------顺序表的感受

1.声明:这篇博客只是记录自己的学习感想,无任何知识层面的内容呦~~ 2.顺序表是线性表的一种,链表也是线性表的一种,我应该是4月份就接触了顺序表,但是因为这个学习顺序的原因,以及这个学校老师的进度&…

Android Jetpack Compose入门教程(二)

一、列表和动画 列表和动画在应用内随处可见。在本课中,您将学习如何利用 Compose 轻松创建列表并添加有趣的动画效果。 1、创建消息列表 只包含一条消息的聊天略显孤单,因此我们将更改对话,使其包含多条消息。您需要创建一个可显示多条消…

Cascade和Cascode在电路中含义的区别

两个电路cascade 是指第一个的输出接到第二个的输入. 在cascode 结构中, 第一个电路是common source amplifier, 第二个电路是common gate amplifier. (以FET 为例)

Chromium源码阅读:深入理解Mojo框架的设计思想,并掌握其基本用法(2)

我们继续分析Chromium的Mojo模块。 Dispatcher Dispatcher 是 Mojo IPC 系统中的一个关键概念。它是一个虚基类类(或接口),用于实现与特定 MojoHandle 相关联的 Mojo 核心 API 调用。在 Mojo 系统中,应用程序通过这些 API 与各种…

LabVIEW 32位与64位版本比较分析:性能与兼容性详解

LabVIEW的32位和64位版本在功能、性能、兼容性和应用场景等方面存在差异。本文从系统要求、内存管理、性能、兼容性、驱动支持和开发维护等多个角度进行详细分析,帮助用户选择合适的版本。 一、系统要求 操作系统支持: 32位LabVIEW:可以在32位…

XL3001E1 SOP-8 3A 40V 220KHz 降压LED恒流驱动器芯片

XL3001E1是一款LED驱动芯片,主要用于需要稳定电流驱动的LED照明产品中。其应用领域广泛,包括但不限于以下几个方面: 1. 室内照明:XL3001E1可用于各种室内LED灯具,如球泡灯、筒灯、射灯和平板灯,提供恒定的电…

【C++进阶】RBTree封装map与set

1.红黑树的迭代器 1.1 begin() begin()就是红黑树的开头,那么对于红黑树来说按照中序序列是该树的最左节点。 Iterator Begin(){Node* leftMin _root;while (leftMin->_left){leftMin leftMin->_left;}return Iterator(leftMin);} 1.2 end() begin()就是…

好书推荐:生成式AI入门与AWS实战

这本书给LLM的爱好者者提供了完整的学习路线,让读者从使用大语言模型开始到剖析常用的技术概念,能够填补了机器学习爱好者从传统的文字处理到大语言模型的空白知识,包括显存计算优化,微调,RAG, 多模态&…

springboot vue 的在线考试系统

springboot & vue 的在线考试系统 在线考试系统,功能如下: 管理员:题库管理,支持选择题和判断题,考试管理,成绩查询,学生管理,教师管理. 教师:题库管理,…

深入解析TF-IDF算法:文本分析的基石与力量

在信息爆炸的时代文本数据无处不在,从新闻报道到社交媒体帖子,从学术论文到产品评论,大量的文本信息需要被有效地分析和利用。在这样的背景下TF-IDF(Term Frequency-Inverse Document Frequency)算法作为一种简单而有效…

西门子200编程软件step7 micro/win安装后PG/PC接口找不到micro/win

我们搞维修调试的,要装的软件很多,换电脑系统的时候,软件都需要重新安装,也是很麻烦的事,不仅费时间,也有一定的不确定性,不知道会遇到什么问题,这一次我就碰到了以前从未碰到过的问题. 安装200编程软件step7 micro/win sp9 后在PG/PC接口里找不到micro/win 开始以为是安装包的…

抖店被扣保证金,做起来太难导致心态崩了,怎么办?

我是王路飞。 技术、黑科技这些东西,决定不了你做店的结果。 能够决定最终结果的,一定是心态,是乐观还是悲观?是自负还是自卑?是焦躁还是踏实?这很关键。 店铺被扣保证金了,感觉没希望了&…

可编辑/不可编辑内容复制方法大全

复制方法是开发中经常会用到的,在实现最近一个需求的时候发现了差异,常用的复制方法对不可复制内容无效,最终实现了功能,在此列出方法,记录一下 常用可粘贴内容的复制方法: copyHandle(name, data) { // 复…

如何优化高并发TCP链接中产生的大量的TIME_WAIT的状态(nginx)

背景 线上有一套高并发的系统经常出现访问超时、服务不可用的告警,访问链路如下:client-> nginx-> web server,所以第一时间排查了nginx服务器,这台服务器主要是做前端web和后端的反向代理。排查nginx日志时发现大量的报错…