express获取参数 以及登录和注册的简单实现

生成包结构

npm init -y

下载express

npm i express

下载mysql

npm i mysql

准备前台文件
login.html

 <form action="http://127.0.0.1:3000/login" method="post">
    用户名<input type="text" name="username" ><br>
    密码:<input type="password" name="pwd" ><br>
    <input type="submit" value="登录">

  </form>

register.html

  <form action="http://127.0.0.1:3000/register" method="post">
    用户名<input type="text" name="username" ><br>
    密码:<input type="password" name="pwd" ><br>
    <input type="submit" value="注册">

  </form>

新建db.js文件 实现数据的增删改查
db.js

//引入mysql
const mysql = require("mysql");
//连接池
const pool = mysql.createPool({
    host:"localhost",
    user:"root",
    password:"123456",
    database:"py",
    //可选
    queueLimit:3,
    connectionLimit:20
})

//添加一个query方法
let query = function(sql,callBack){
    pool.getConnection((err,conn)=>{
        if(err){
            console.log(err);
            return
        }
        conn.query(sql,(err,data)=>{
            if(err){
                console.log(err);
                return
            }
            if(callBack){
                callBack(data);
            }
        })
    })
}

//封装 插入一条数据
let insert = (table,datas,callBack)=>{
    //拼接SQL
    let fields = ''; //字段
    let values = ''; //值
    for(const k in datas){
        fields += k+"," //拼接字段
        values += `'${datas[k]}',` //拼接数据
    }
    //清除最后一位的逗号
    fields = fields.slice(0,-1);
    values = values.slice(0,-1);
    console.log(fields);
    console.log(values);
    let sql = `INSERT INTO ${table} (${fields}) VALUES (${values})`;
    query(sql,callBack);
}

//封装一个删除方法
let del = (table,datas,callBack)=>{
    let arr = ['1=1']; //避免datas为空时 出现异常错误
    for(const k in datas){
        arr.push(`${k}='${datas[k]}'`);

    }
    let sql = `delete from ${table} where ${arr.join(" and ")}`;
    query(sql,callBack)
}

/**
 * 修改方法  
 * @param {string} table 表名
 * @param {object} sets 修改的字段与值
 * @param {object} wheres 判断条件
 * @param {Function} callBack 回调函数
 */

let update = (table,sets,wheres,callBack)=>{
    //准备一个数组 用来拼接 where子句
    let whereArr = [`1=1`]; //避免datas为空 出现异常
    for(const k in wheres){
        whereArr.push(`${k}='${wheres[k]}'`); //拼接
    }
    //准备一个数组 用来拼接 set 子句
    let setArr = [];
    for(const k in sets){
        setArr.push(`${k}='${sets[k]}'`)  //for in 遍历 数组 k 是一个索引      遍历对象 k是一个键
        // console.log();
    }
    let sql = `UPDATE ${table} SET ${setArr.join(",")}  WHERE ${whereArr.join(" and ")}`
    query(sql,callBack)
}

//暴露出去方法
module.exports = {
    query,
    insert,
    del,
    update
}
const express = require("express");  //引入express模块
const db = require("./db");   //引入增删改查模块
const app = express();
const port = 3000;

//固定写法 解析post参数 写在路由的前面
app.use(express.urlencoded({extended:false}));

app.get("/",(req,res)=>res.send("hello word!"));

//分页查询 默认一页现实3条数据
app.get("/list",(req,res)=>{
    let arr = [{
        id:1,
        name:"三国演义",
        price:59,
        author:"罗贯中"
      },{
        id:2,
        name:"水浒传",
        price:49,
        author:"施耐庵"
      },{
        id:3,
        name:"西游记",
        price:69,
        author:"吴承恩"
      },{
        id:4,
        name:"红楼梦",
        price:89,
        author:"曹雪芹"
      },{
        id:5,
        name:"镜花缘",
        price:58,
        author:"李汝珍"
      },{
        id:6,
        name:"金瓶梅",
        price:72,
        author:"兰陵笑笑生"
      }]
      //结构赋值
      let {page,pageSize}=req.query;

      res.send(arr.slice((page-1)*pageSize,page*pageSize));

})
//登录
app.post("/login",(req,res)=>{
    // res.send(req.body.username)
    // res.send(req.body.pwd)
    db.query("select * from user where name = '"+req.body.username+"' and pwd = '"+req.body.pwd+"'",(data)=>{
          if (data.length > 0) {
            res.send("登录成功!");
          }else{
            res.send("登录失败!");
          }
    })
})

//注册
app.post("/register",(req,res)=>{

     let user = {
         name:req.body.username,
         pwd:req.body.pwd
        }
     db.insert("user",user,()=>{
         res.send("注册成功");
         }else{
         res.send("注册失败")
     })
})

//动态参数
app.get("video/:id/:name",(req,res)=>{
    res.send(req.params);
})

app.listen(port, () => console.log(`Example app listening on port ${port}!`))


运行app.js测试即可

node app.js
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要了解懒人听书的API接口的具体实现,以及登录注册需要传递哪些参数和接口地址。 一般来说,使用Node.js实现登录注册需要以下步骤: 1. 安装相关依赖,例如express、body-parser等; 2. 创建一个express应用,在应用中定义路由; 3. 通过路由向懒人听书API接口发送请求,获取响应数据; 4. 对响应数据进行处理,例如保存用户信息、验证用户信息等; 5. 返回处理结果给前端。 以下是一个简单的代码示例: ```javascript const express = require('express'); const bodyParser = require('body-parser'); const fetch = require('node-fetch'); const app = express(); const port = 3000; app.use(bodyParser.urlencoded({ extended: false })); app.post('/register', async (req, res) => { const { username, password } = req.body; const response = await fetch('http://api.lazyaudios.com/registe', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ api_key: 'YOUR_API_KEY', username, password, }), }); const data = await response.json(); if (data.code === 0) { // 注册成功 res.json({ success: true }); } else { // 注册失败 res.json({ success: false, message: data.msg }); } }); app.post('/login', async (req, res) => { const { username, password } = req.body; const response = await fetch('http://api.lazyaudios.com/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ api_key: 'YOUR_API_KEY', username, password, }), }); const data = await response.json(); if (data.code === 0) { // 登录成功 // 保存用户信息等操作 res.json({ success: true }); } else { // 登录失败 res.json({ success: false, message: data.msg }); } }); app.listen(port, () => { console.log(`Server is running on port ${port}.`); }); ``` 注意,上述代码中的`YOUR_API_KEY`需要替换为你在懒人听书API平台上申请的API Key。此外,为了简化代码,上述示例中没有包含用户信息的保存和验证过程,需要根据具体需求进行补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值