NodeJS编写后端接口

技术栈

1.express:Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建

各种 Web 应用,和丰富的 HTTP 工具,使用 Express 可以快速地搭建一个完整功能的网站。

2.mysql:用于操作MySQL数据库

3.body-parser:用于解析JSON请求体

源码

链接:node_admin: NodeJS编写后端接口

具体实现

1.新建文件夹命名为Project,并在文件夹内使用cmd命令初始化node项目

npm init

2.引入相关依赖

npm i express -S
npm i mysql -S
npm i body-parser -S

3.新建utils目录,新建DbUtil,用于连接MySQL的工具类

const mysql = require('mysql');function createConnection() {const connection = mysql.createConnection({host: 'localhost',user: 'root',port: '3306',password: 'admin',     // 改成你自己的密码database: 'mumangguo'    // 改成你的数据库名称});connection.connect((err) => {if (err) {console.error('Error connecting to database: ' + err.stack);return;}console.log('Connected to database as ID ' + connection.threadId);});return connection;
}module.exports = {createConnection
};

4.在utils目录中继续新建Server.js,用于创建服务器的工具类

const express = require('express');
const bodyParser = require('body-parser'); // 如果使用的是body-parser中间件function startServer() {const app = express();// 监听端口const server = app.listen(8080, '127.0.0.1', function () {const host = server.address().address;const port = server.address().port;console.log("地址为 http://%s:%s", host, port);});// 设置跨域访问app.all('*', function(req, res, next) {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers", "*");res.header("Access-Control-Allow-Methods", "*");next();});// 使用 body-parser 中间件来解析 JSON 请求体app.use(bodyParser.json());return app;
}module.exports = startServer;

5.在项目根目录下新建user目录,在user目录中新建UserController.js文件,用于编写处理用户表的相关操作方法

const {createConnection} = require('../utils/DbUtil');
const connection = createConnection();// 登录方法
exports.login = (req, res) => {const {username, password} = req.body;const sql = `SELECT * FROM user WHERE username = '${username}' AND password = '${password}'`;connection.query(sql, (err, result) => {if (err) {res.status(500).json({code: 500, msg: '登录失败'});} else {if (result.length > 0) {res.status(200).json({code: 200, msg: '登录成功'});} else {res.status(500).json({code: 500, msg: '用户名或密码错误'});}}});
};//注册方法
exports.register = (req, res) => {const {username, password} = req.body;const sql = `INSERT INTO user (username, password) VALUES ('${username}', '${password}')`;connection.query(sql, (err, result) => {if (err) {res.status(500).json({code: 500, msg: '注册失败'});} else {res.status(200).json({code: 200, msg: '注册成功'});}});
};

6.在项目根目录下新建main.js入口文件

const startServer = require('./utils/Server');
const {login, register} = require("./user/UserController");const app = startServer();// 处理登录请求
// {"username":"admin","password":"admin"}
app.post('/login', (req, res) => {// 调用UserController的login方法login(req, res);
});// 处理注册请求
// {"username":"admin","password":"admin"}
app.post('/register', (req, res) => {// 调用UserController的register方法register(req, res);
});

7.建立数据库相关表结构

/*Navicat Premium Data TransferSource Server         : LocalSource Server Type    : MySQLSource Server Version : 80027 (8.0.27)Source Host           : 127.0.0.1:3306Source Schema         : mumangguoTarget Server Type    : MySQLTarget Server Version : 80027 (8.0.27)File Encoding         : 65001Date: 12/05/2024 15:12:52
*/
create database mumangguo;
use mumangguo;SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int NOT NULL AUTO_INCREMENT,`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'admin', 'admin');SET FOREIGN_KEY_CHECKS = 1;

8.在项目根目录中运行main.js文件,启动服务器测试接口即可!

node .\main.js

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

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

相关文章

Spring:深入理解 Spring 事务原理

Spring 事务 Spring 框架支持两种主要的事务管理方式:编程式事务(Programmatic Transaction Management)和声明式事务(Declarative Transaction Management)。 1.编程式事务   编程式事务管理指的是在代码中显式地控…

使用 LangGraph 实现邮件智能处理系统来处理客户咨询【附代码】

简介 在这篇博文中,我们将探讨如何使用 LangGraph 结合 RAG(Retrieval-Augmented Generation)技术来构建一个响应客户邮件的电子邮件智能系统。LangGraph 是一个强大的框架,专为构建和部署基于图的语言应用而设计。它支持复杂的查…

【Linux】centos7安装软件(rpm、yum、编译安装),补充:查找命令的相关文件路径,yum安装mysql

【Linux】技术上,Linux是内核。而术语上,我们通常说的Linux是完整的操作系统,其实称为"Linux发行版",是将Linux内核和应用系统打包,由不同的发行家族发行了不同版本。Linux发行版众多,主要有RedH…

职校智慧校园现状及问题分析

各大中职院校及高职院校是校园信息化的先行者和开拓者,很早就开始注重信息化基础设施建设和信息化人文素养的提升。在过去几年里,随着国家大力发展与扶植职校教育,学校投入相当的经费进行了校园信息通信网络、计算机等基础硬件设备建设&#…

Python3 笔记:help()查看函数的用法

一些不常用的函数或是模块的用法记不清了怎么办? Python的内置函数help()可以查看函数或模块用途的详细说明。 操作方法很简单,直接在help()括号内填写参数,然后运行就可以看到结果了。 举例: help(input) # 查询input()函数的…

RabbitMQ 面试题(一)

1. 简述为什么要使用 RabbitMQ ? 使用 RabbitMQ 的主要原因包括以下几点: 解耦:在复杂的系统中,不同的服务或组件之间往往需要通信和协作。RabbitMQ 作为消息队列,允许这些组件或服务通过发送和接收消息来交互,而无…

CLion 写 Rust 报Project directory `/Users/.../rsheets` does not exist.

每次打开CLion都会看到像下面这样的报错,Project directory /Users/.../rsheets does not exist.,虽然不会影响你写代码,但每次看到还是不舒服,所以研究一下怎么解决。 原因是这样的,每当我们创建一个 Cargo 项目&…

PDF Squeezer for Mac,让PDF压缩更高效

还在为PDF文件过大而烦恼吗?试试PDF Squeezer for Mac吧!它拥有强大的压缩功能,可以快速将PDF文件压缩至更小的体积,让你的文件传输更快捷。同时,它还支持多种压缩方式,满足你的不同需求。赶快下载体验吧&a…

革新机器人任务规划:TREE-PLANNER引领高效、准确的机器人动作生成新趋势

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言 任务规划在机器人技术中扮演着至关重要的角色。它涉及到为机器人设计一系列中级动作(技能),使其能够完成复杂的高级任…

C语言基础-枚举类型

C语言中的枚举类型(enum)是一种用户定义的数据类型,它允许为整数常量指定一个名称,使得代码更易于阅读和维护。枚举类型本质上是一种特殊的整数类型,但每个枚举值都有一个名字,而不是直接使用整数。 枚举类…

掌握 Linux Crontab:完整指南与实用案例

一.简介 1. 什么是 Crontab? Crontab 是一个在 Unix 和类 Unix 操作系统上用来定期执行任务的工具。它是从 “cron table” 衍生而来的,“cron” 是一个 Unix 系统自带的后台守护进程,用于定期执行预定的任务或命令,比如备份文件…

电视剧电影原声背景音乐,经典影视配乐片段音效合集

一、素材描述 本套影视配乐素材,大小1.89G,27个压缩文件。 二、素材目录 宰相刘罗锅配乐片段.rar 影视配乐65首.rar 太极张三丰原声.rar 东邪西毒原声配乐15首.rar 东方不败之风云再起配乐24首.rar 东方不败原声配乐16首.rar 电影大话西游原声配…

python绘制圣诞树 如何用python绘制一个圣诞树

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 圣诞树,是指用灯烛和装饰品把枞树或洋松装点起来的常青树。作为是圣诞节重要的组成元素之一,近代圣诞树起源于德国,后来逐步在世界范围内流行起来

聊聊Mysql锁问题

聊聊Mysql锁问题 一、 Mysql锁概述二、Myisam锁问题2. 1 表级锁的锁模式2.2 如何加表锁2.3 并发插入2.4 Myisam的锁调度 三、InnoDB锁问题3.1 事务及ACID属性3.2 并发事务处理带来的问题3.3 事务隔离级别3.4 获取InnoDB行锁争用情况3.5 InnoDB行锁模式及加锁方法3.6 InnoDB行锁…

sql-行转列(转置)

- 行转列的常规做法是,group bysum(if())【或count(if())】 例题: 已知 yearmonthamount199111.1199121.2199131.3199141.4199212.1199222.2199232.3199242.4 查成这样一个结果 yearm1m2m3m419911.11.21.31.419922.12.22.32.4 解答: us…

串转并74hC595控制流水灯

#include <reg51.h> //重新定义系统数据类型 typedef unsigned int u16; typedef unsigned char u8; //宏定义数据端口 #define LEDDZ_COL_PORT P0 #define SER_AP_PORT P1 //定义数据存储端口 sbit SERP3^4; sbit SRCLKP3^6; sbit RCLKP3^5; //依次闪烁…

WPS表格:对比少于1万的两列数据

当我们需要对于A、B两列乱序的数据&#xff0c;找出A列中某一项B列有没有&#xff0c;或者找出B列中的某一项A列有没有&#xff0c;都可以先将这两列数据放入WPS表格中&#xff1a; 1.选中C列的第一行的单元格&#xff0c;在函数区输入函数 如果我们以A为基准&#xff0c;找A中…

SQL语句优化技巧

目录 1、sql语句规范 2、sql语句优化 1、sql语句规范 MySQL在Linux系统下数据库名&#xff0c;表名&#xff0c;存储过程名&#xff0c;函数名称&#xff0c;触发器名称等区分大小写&#xff0c;列名不区分大小写&#xff0c;原因是这些操作系统下文件名称区分大小写。 MySQL…

19、案例实战:上亿请求轻松应对,老年代垃圾回收参数调整技巧大公开

19.1、前文回顾 在上一篇文章中,我们已经向大家介绍了一个日活跃用户百万级别,处理请求量上亿的电商系统案例。我们选择了这个中型电商系统在大促期间的瞬时高峰下单场景,作为我们的JVM优化分析的场景。通过预测,我们得出在大促高峰期,每台机器每秒需要处理300个订单请求…

蓝桥杯-线性动态规划问题背包问题进阶策略详解-

题目&#xff1a;蓝桥云课-青蛙吃虫 解题代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm> using namespace std;const int N106;int f[N][N]; int a[N]; int t,l,r,k,n;int main() {cin>>t;while(t--){scanf("%d%…