博客
关于我
node.js+react写的一个登录注册 demo测试
阅读量:796 次
发布时间:2023-02-16

本文共 3328 字,大约阅读时间需要 11 分钟。

node.js + React 写的一个登录注册 DEMO 测试

目录结构

  • 前端:使用 create-react-app 脚手架搭建
  • 后端:使用 express-generator 搭建
  • 跨域问题:后端安装 cors 包
  • API 调用规范:
    • POST、PUT 请求参数放在 body 中
    • GET、DELETE 请求参数放在 query 中
  • 注意事项

    • 确保前端和后端运行在同一网络环境下
    • 后端数据库连接信息需修改为实际数据库配置
    • 用户注册时 name 字段需加上单引号
    • 后端 API 路由需根据实际项目路径调整

    前端代码示例

    // src/api/index.jsimport axios from 'axios';const base = {  baseUrl: 'http://localhost:3001',  register: '/users/register',  login: '/users/login',  updata: '/users/updata',  del: '/users/del',  allUser: '/users/allUser'};const api = {  register(params) {    return axios({      method: 'POST',      url: base.baseUrl + base.register,      data: params    });  },  login(params) {    return axios({      method: 'POST',      url: base.baseUrl + base.login,      data: params    });  },  updata(params) {    return axios({      method: 'PUT',      url: base.baseUrl + base.updata,      data: params    });  },  del(params) {    return axios({      method: 'DELETE',      url: base.baseUrl + base.del,      params: params    });  },  allUser(params) {    return axios({      method: 'GET',      url: base.baseUrl + base.allUser,      params: params    });  }};export default api;

    后端代码示例

    const express = require('express');const router = express.Router();const db = require('./utils/db');router.get('/', (req, res) => {  res.send('欢迎访问我们的登录注册系统');});// 用户注册路由router.post('/register', (req, res) => {  const { name, pwd } = req.body;  const sql = `SELECT * FROM login WHERE name = '${name}'`;  db.query(sql, (error, data) => {    if (error) return res.status(500).send('数据库错误');    if (data.length > 0) {      return res.send({ msg: '用户名已存在' });    }    const insertSql = `INSERT INTO login (name, pwd) VALUES('${name}', '${pwd}')`;    db.query(insertSql, (error, data) => {      if (error) return res.status(500).send('插入失败');      return res.send({ msg: '注册成功,请登录' });    });  });});// 用户登录路由router.post('/login', (req, res) => {  const { name, pwd } = req.body;  const sql = `SELECT * FROM login WHERE name = '${name}' AND pwd = '${pwd}'`;  db.query(sql, (error, data) => {    if (error) return res.status(500).send('登录失败');    if (data.length > 0) {      return res.send({ msg: '登录成功', storage: name });    }    return res.send({ msg: '账号或密码错误' });  });});// 用户信息修改路由router.put('/updata', (req, res) => {  const { name, pwd } = req.body;  const sql = `UPDATE login SET pwd = '${pwd}' WHERE name = '${name}'`;  db.query(sql, (error, data) => {    if (error) return res.status(500).send('修改失败');    if (data.affectedRows > 0) {      return res.send({ msg: '修改成功,请重新登录' });    }    return res.send({ msg: '修改失败' });  });});// 用户删除路由router.delete('/del', (req, res) => {  const { delName } = req.query;  const sql = `DELETE FROM login WHERE name = '${delName}'`;  db.query(sql, (error, data) => {    if (error) return res.status(500).send('删除失败');    if (data.affectedRows > 0) {      return res.send({ msg: '用户已成功删除' });    }    return res.send({ msg: '删除失败' });  });});// 查看所有用户路由router.get('/allUser', (req, res) => {  const sql = `SELECT * FROM login`;  db.query(sql, (error, data) => {    if (error) return res.status(500).send('查询失败');    if (data.length > 0) {      return res.send(data);    }    return res.send({ msg: 0 });  });});module.exports = router;

    源码下载建议

    根据上述代码示例,建议将前端和后端代码分别下载至项目根目录,进行如下步骤:

  • 安装所需依赖包
  • 修改数据库配置
  • 根据实际路径调整 API 路由
  • 运行项目测试
  • 如有疑问,可在项目 issue 中反馈。

    转载地址:http://ppjfk.baihongyu.com/

    你可能感兴趣的文章
    net包之IPConn
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS共享文件系统搭建
    查看>>
    nfs复习
    查看>>
    NFS网络文件系统
    查看>>
    nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
    查看>>
    ng 指令的自定义、使用
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>
    Nginx Location配置总结
    查看>>
    Nginx upstream性能优化
    查看>>
    Nginx 中解决跨域问题
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>