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.query
  let 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.body
  console.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.body
  console.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.userId
  if(!userId){
    res.send({
      code: 500,
      msg: '请输入用户id'
    })
  }
  let sql = `delete from sys_user where user_id=${userId}`
  // 路径为http://localhost:8081/user/delete?userId=1
  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 
        })
      }
  })
})

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

项目仓库

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Quarkus 替代 SpringBoot

1 概述2 SpringBoot3 Quarkus4 比较5 调查结果6 从 Spring 转换到 Quarkus7 我是 Spring 开发者,为什么要选Quarkus?8 Spring 开发者可以活用哪些现有知识?9 对Spring开发者有额外的好处吗?10 Spring开发者如何开始学习Quarkus&am…

libgdx实现雪花、下雪效果(二十三)

libgdx实现雪花、下雪效果(二十三) 转自:https://lingkang.top/archives/libgdx-shi-xian-xue-hua package effect;import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.backends.lwjgl3.…

使用CXF调用WSDL(二)

简介 本篇文章主要解决了上篇文章中遗留的对象嵌套问题,要想全面解析无限极的对象嵌套需要使用递归去解决 上文链接: 使用CXF调用WSDL(一) 上文回顾 上文使用了单方法“ call() ”解决了List和基本类型(含String&…

基于逐次变分模态分解(SVMD)联合小波阈值去噪

代码原理 逐次变分模态分解 (Iterative Variational Mode Decomposition, IVMD) 是一种信号分解方法,它可以将一个时域信号分解为若干个本征模态函数(Intrinsic Mode Functions, IMF)。它通过迭代寻找信号的本征模态函数和残差部分&#xff…

Kalman滤波

文章目录 一、公式推导二、扩展卡尔曼滤波 卡尔曼滤波是一种最优化递归数据处理算法。(Optimal Recursive Data Processing Algorithm) Kalman滤波是时域滤波,采用状态空间描述系统,运用递推形式是计算简单,数据存储量…

TSINGSEE视频汇聚管理与AI算法视频质量检测方案

一、建设背景 随着互联网视频技术的发展,视频监管在辅助安全生产、管理等方面发挥了不可替代的作用。但是,在监管场景中,仍然存在视频掉线、视频人为遮挡、视频录像存储时长不足等问题,对企业的日常管理和运转存在较大的安全隐患…

A. Weird Sum

题目链接 : Problem - 1648A - Codeforces 题面 : 题意 : 输入 n m (1≤n*m≤1e5) 和 n 行 m 列的矩阵 a,元素范围 [1,1e5]。 对于矩阵中的所有相同元素对,即满足 a[x1][y1] a[x2][y2] 的元素对 (a[x1][y1], a[x2][y2]),把 abs(x1-x2)…

P3371 【模板】单源最短路径(弱化版)

【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路…

代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和

LeetCode T1143 最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣(LeetCode) 题目思路: 动规五部曲分析 1.确定dp数组的含义 这里dp数组的含义是结尾分别为i-1,j-1的text1和text2的最长公共子序列长度 至于为什么是i-1,j-1我之前已经说过了,这里再…

ABZ正交编码 - 异步电机常用的位置信息确定方式

什么是正交编码? ab正交编码器(又名双通道增量式编码器),用于将线性移位转换为脉冲信号。通过监控脉冲的数目和两个信号的相对相位,用户可以跟踪旋转位置、旋转方向和速度。另外,第三个通道称为索引信号&am…

μC/OS-II---计时器管理2(os_tmr.c)

目录 获取计时器的名字获取计时器到期前剩余的时间查看计时器的状态 计时器是倒计时器,当计数器达到零时执行某个动作。用户通过回调函数提供这个动作。回调函数是用户声明的函数,在计时器到期时被调用。在回调函数中绝对不能进行阻塞调用(例…

软件测试基础1:认识软件及测试

功能测试能力:具备对所有软件的功能进行质量验证。 1什么是软件 分类 应用软件系统软件 软件:控制计算机硬件工作的工具。 2软件基本组成 3软件产生过程 4什么是软件测试 软件测试:使用技术手段验证软件是否满足使用需求。 5软件测试目的 减少软件…

使用matlab制作声音采样率转换、播放以及显示的界面

利用matlab做一个声音采样率转换、播放以及显示的界面 大抵流程: 图形界面创建:使用figure函数创建名为“声音采样率转换”的图形界面,并设置了其位置和大小。 按钮和文本框:使用uicontrol函数创建了选择音频文件的按钮、显示当前…

工业数据的“最后一公里”怎么走?

随着工业互联网的迅猛发展,工业数据已经成为推动制造业转型升级的重要动力。然而,面对海量的工业数据,如何高效、准确地走过数据的“最后一公里”,成为制约企业发展的关键问题。本文将探讨工业数据“最后一公里”所面临的挑战&…

魔兽服务器学习-笔记(服务器部署、地图管理、DB、日志模块、任务模块、战斗模块)

文章目录 一、环境准备1)依赖安装2)源码下载和编译 二、生成数据信息1)地图数据信息(客户端信息)2)数据库信息 三、启动服务器四、日志模块五、数据库模块六、场景模块1)地图管理2)A…

如何在微信内置浏览器内抓包

文章目录 使用环境&工具使用步骤1、手机USB连接上电脑,打开USB调试2、解压adb工具的压缩包,使用该工具连接上手机3、开启微信抓包4、电脑上打开chrome内核的浏览器或edge浏览器 使用环境&工具 windows电脑 安卓手机 adb工具 USB数据线 使用步骤…

【已解决】git push send-pack: unexpected disconnect while reading sideband packet

解决办法:修改缓存大小 打开项目所在路径下的git目录 找到config文件,用记事本打开编辑。 添加如下内容并保存即可 [http] postBuffer 1048576000

每日一练:Python中实现将阳历转换为农历

农历是中国传统的农业历法,与阳历(公历)有所不同。在Python中,我们可以使用第三方库 lunardate 来实现阳历到农历的转换。以下是一个简单的示例,演示如何在Python中执行这个转换过程。 1.安装 lunardate 库 首先&…

VR全景:打造虚拟政务服务,打通服务群众“最后一公里”

大家对政务大厅的工作效率可能已经司空见惯,办事窗口少,而需要办理的群众和业务却很多,很多去政务大厅办理业务的,排队几个小时也是常有的。并且在传统政务服务中,办事流程一般都较为复杂、耗时长,往往需要…

基于SSM的宠物领养系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…