Express基本接口开发-入门学习与后续进阶

前提推荐

任何一个新的知识都是从文档看起,因此express官方文档示例有必要去学习一遍。
推荐看:

  1. 推荐入门
  2. 指南-路由
  3. 指南-中间件

在这里插入图片描述
看完这几个内容之后心里大概知道express有些什么东西了,然后现在就可以去练习了
注意:更多示例-代码可以在了解基本的内容之后在去看去练习

第一步:了解Express应用程序生成器

项目说明
通过
通过命令行执行之后会生成一个文件夹。现在了解该文件夹

1./bin/www (项目的启动配置文件,包含了启动端口配置,服务器错误与事件监听(这个文件夹完全可以不用管,端口为3000)在这里插入图片描述

/public/ (一个公共静态数据文件夹,里面的images,javascripts,stylesheets都可以不管)
/routes/ (路由编写文件夹,这里面用来编写接口的)
/views/ (jade 数据模板文件夹,这个其实没啥用。如果仅仅只是开发接口的话完全可以删除掉,但是要注意删除或注释app.js 中的这两行
在这里插入图片描述
app.js 这是一个核心文件,中间件注册,路由注册等功能都在这个文件夹在这里插入图片描述
package.json 包管理文件

第二步:连接数据库

npm install --save mysql
建立数据库连接文件
在这里插入图片描述

第三步:操作数据,使用最原始的sql拼接方式

user.js中如下

var express = require('express');
var router = express.Router();
var connection = require('./db/connection.js')/*** 单表增删查改处理* // 多表联表类似,仅需拼接对应的sql即可*/ 
/* 查询用户列表数据 */
router.get('/list', function(req, res) {const { userName } = req.querylet sql = `select * from sys_user`if(userName){sql = sql + ` where user_name like '%${userName}%'`}// 执行sql语句查询sys_user表中所有数据,最纯粹的方式就是自己拼sql语句try {connection.query(sql, function(error,results){if(error){return res.send({code:500,msg: 'fail',})}else{return res.send({code: 200,msg: 'success',data: results })}})}catch{throw Error('请求失败')}
})
/* 新增用户数据 */
router.post('/add', function(req, res) {let body = req.bodyconsole.log('body', body)let sql = `insert into sys_user (user_name,user_phone) values ('${body.userName}','${body.userPhone}')`try{// sql语句查找拼接即可connection.query(sql, function(error,results){if(error){return res.send({code:500,msg: 'fail',})}else{return res.send({code: 200,msg: 'success',data: results })}})}catch{throw Error('请求失败')}
})
/* 修改用户数据 */
router.post('/edit', function(req, res) {let body = req.bodyconsole.log('body', body)let sql = `update sys_user set user_name='${body.userName}',user_phone=${body.userPhone}where user_id=${body.userId}`// sql语句查找拼接即可connection.query(sql, function(error,results){if(error){return res.send({code:500,msg: 'fail',})}else{return res.send({code: 200,msg: 'success',data: results })}})
})/* 删除用户数据 */
router.get('/delete', function(req, res) {let userId = req.query.userIdif(!userId){res.send({code: 500,msg: '请输入用户id'})}let sql = `delete from sys_user where user_id=${userId}`// 路径为http://localhost:8081/user/delete?userId=1connection.query(sql, function(error,results){if(error){return res.send({code:500,msg: 'fail',})}else{return res.send({code: 200,msg: 'success',data: results })}})
})
module.exports = router;

最原始的一种增删查改方式就完成了

参数说明
req表示的是请求参数对象,其中req.query和req.body两个对象包含着接口请求传递过来的参数
res表示相应参数对象。res.send是对应的响应方法用于编辑返回的数据
  • 如果接口请求是url?a=1&b=2路径形式的传参则在req.query对象里面存在该路径的参数
  • 如果接口请求是body Json形式的传参则在req.body中有该请求的参数
  • connection.query是mysql的方法用于执行sql

文件上传

使用中间件:

npm install --save express-fileupload

app.js中引入

// 配置文件上传模块
var fileUpload = require('express-fileupload');
app.use(fileUpload());
// 注册路由
var fileRouter = require('./src/routes/file');
app.use('/file', fileRouter);

编写file.js文件

var express = require('express');
var router = express.Router();/* 文件上传 */
router.post('/upload', function(req, res) {// 安装express-fileupload之后可以从req.files中找到multipart/form-data上传的文件file// 上传方式参考public图片try {let file = req.files.fileif(!file) {res.send({code: 500,message: '请选择文件'});} else {// 将上传的文件保存在public文件夹中file.mv('./public/' + file.name,function(error){if(error){return res.send({code:500,msg: 'fail',})}else{return res.send({code: 200,msg: 'success',})}})}} catch (err) {res.send({code: 500,msg: '文件上传失败'});}
})
module.exports = router;

项目仓库

gitee仓库:https://gitee.com/twang-gitee/web-server-study.git

关于中间件

文章推荐:https://blog.csdn.net/XiugongHao/article/details/133814757

关于sql查询功能辅助工具:orm框架

typeOrm 和 Sequelize 查看相关文档即可学习

关于express进阶

对于学习express框架而言其实是比较简单的,了解完上面内容即可完成常规的小项目开发,需要的功能可以找出对应的中间件协助即可,如:生成token完成登录,想要用orm操作则添加进去使用,不想要则直接最原始的拼接sql即可
但是如果想要更加深入学习使用nodejs并且开发服务端应用,则推荐学习nestjs框架(基于express的进阶框架)
推荐文章:https://blog.csdn.net/lxy869718069/article/details/114028195

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

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

相关文章

csrf学习笔记总结

跨站请求伪造csrf csrf概述 掌握CSRF 漏洞原理 掌握CSRF 漏洞场景 掌握CSRF 漏洞验证 csrf原理 ​ 跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程…

web 渗透 信息搜集

一 收集域名信息 1.whois查询 whois(读作“Who is”,非缩写),标准的互联网协议&#xff0c…

开发板上网详细教程

开发板上网详细教程 PC端操作开发板操作 写在前面 今天想配置开发板的boa服务器,需要下载sudo apt-get install bison flex,但是一直报错,就蒙蔽了,后来想想真不应该啊,电脑和开发板通信没问题,但也只是如此…

解密网络世界的秘密——Wireshark Mac/Win中文版网络抓包工具

在当今数字化时代,网络已经成为了人们生活和工作中不可或缺的一部分。然而,对于网络安全和性能的监控和分析却是一项重要而又复杂的任务。为了帮助用户更好地理解和解决网络中的问题,Wireshark作为一款强大的网络抓包工具,应运而生…

正版软件|Ashampoo WinOptimizer 26 - Win优化器

使用 Ashampoo WinOptimizer 加速、优化和清洁你的电脑,非常轻松! 关于Ashampoo WinOptimizer Windows是很棒,但总有改进的余地。 这就是Ashampoo WinOptimizer 26的用武之地! 因为,随着时间的推移,操作系统往往会变慢…

数据结构--图解单链表

学习链表最重要的就是会画图,尤其是要理解链表的逻辑结构和物理结构,理解链表的底层原理才能使用的如鱼得水。 希望这篇文章可以帮助各位,记得关注收藏哦;若发现问题希望私信博主,十分感谢。 当然学习链表是需要大家对…

《Linux从练气到飞升》No.28 Linux中的线程同步

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…

sMLP:稀疏全mlp进行高效语言建模

这是一篇2022由纽约州立大学布法罗分校和Meta AI发布的论文,它主要的观点如下: 具有专家混合(MoEs)的稀疏激活mlp在保持计算常数的同时显着提高了模型容量和表达能力。此外gMLP表明,所有mlp都可以在语言建模方面与transformer相匹配&#xf…

人力物力和时间资源有限?守住1个原则,精准覆盖所有兼容性测试!

随着 APP 应用范围越来越广,用户群体越来越大,终端设备的型号也越来越多,移动终端碎片化加剧,使得 APP 兼容性测试成为测试质量保障必须要考虑的环节。 APP 兼容性测试通常会考虑:操作系统、厂家 ROM、屏幕分辨率、网…

Git笔记简化版

起源 Git是目前世界上最先进的分布式版本控制系统。林纳斯-托瓦兹在开发linux系统时有很多人想有一个平台进行版本控制。当时同类型的版本控制软件是BitKeeper,bitKeep是不开源的。当林纳斯团队无法免费使用它时, 林纳斯花费了一个月左右时间就开发出了…

ubuntu 20.04+ORB_SLAM3 安装配库教程

目录 安装ros(如果只是运行ORB-SLAM3,可以跳过安装)0. ros 安装教程1. 安装opencv2. 安装Pangolin3. 安装Eigen34.安装Python & libssl-dev5.安装boost库6.安装ceres库(不必须)7.安装Sophus库(不必须)8. 安装g20库…

echarts:graph图表拖拽节点

需求:实现一个可视化编辑器,用户可以添加节点,并对节点进行拖拽编辑等 实现期间碰到很多问题,特意记录下来,留待将来碰到这些问题的同学,省去些解决问题的时间 问题1:节点的data如下&#xff0…