Express基本接口开发-入门学习

news/2024/7/19 11:01:11 标签: express, nodejs学习

前提推荐

任何一个新的知识都是从文档看起,因此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_154">关于express进阶

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


http://www.niftyadmin.cn/n/5179827.html

相关文章

Kstry: 业务架构的首选之选

在当今数字化时代,构建稳健且高效的业务架构对于企业的成功至关重要。Kstry作为一种创新性的技术架构,已经在各个领域展现出卓越的表现。本文将探讨为何Kstry被视为业务架构的首选,并介绍其独特的特点和优势。 引言 业务架构是指基于企业战略…

js通过两个经纬度算距离

使用 Haversine 公式来计算两个经纬度之间的距离。以下是一个简单的 JavaScript 函数,用于计算两个坐标点之间的距离: function getDistance(lat1, lon1, lat2, lon2) {// 将角度转换为弧度function toRadians(degrees) {return degrees * Math.PI / 18…

备忘待办清单日历提醒工具哪些可以规划日程事务?

在日常的工作及生活中离不开使用备忘录,备忘录可以帮助大家记录一些容易忘记的清单事项,提前将待办清单整理好以后,可方便大家按序就班的完成各项任务。当前记录备忘事项的工具比较多,在规划日常事务方面,建议大家可以…

【01】Istio-1.17 部署

1.1 部署Istio控制平面 部署方法 istioctl istio的专用管理工具,支持定制控制平面和数据平面通过命令行的选项支持完整的IstioOperator API命令行各选项可用于单独设置,以及接收包含IstioOperator自定义资源(CR)的yaml文件 Istio Operator Istio相关的自…

飞腾CPU命名

飞腾 CPU 飞腾CPU之前为FT-系列,现在为S/D/E系列:S是服务器高性能腾云系列,D是高效能桌面类腾锐系列,E是高端嵌入式腾珑系统。这里主要对服务器S系列CPU命名进行说明: 飞腾S系列目前有S2500、S5000、S5000C&#xff…

探索游戏公司跨部门合作的项目管理工具选择

为了实现出色的用户体验,游戏公司需要强大的研发能力和发行运营经验。通常情况下,游戏公司内部有多个独立工作的研发部门和发行部门,它们需要跨部门协作。随着公司快速发展和游戏项目增加,游戏公司迫切需要一套适用于特殊协作流程…

离散卡尔曼滤波器算法详解及重要参数(Q、R、P)的讨论

公开数据集中文版详细描述参考前文:https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192神经元Spike信号分析参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm1001.2014.3001.5501神经元运动调制分析参考…

【Unity】LayoutGroup自动缩放子对象大小

需求: 如果LayoutGroup的子物体太多,超出layoutGroup的范围,则对子物体进行缩小。确保子物体都在LayoutGroup的范围内 代码: [ExecuteInEditMode] [RequireComponent(typeof(HorizontalOrVerticalLayoutGroup))] public class Lay…