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.hqwc.cn/news/697933.html

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

相关文章

HTML哆啦A梦

目录 写在前面 HTML简介 完整代码 代码分析 系列推荐 写在最后 写在前面 谁不想拥有一只可爱的叮当猫呢?本期小编给大家带来了一个萌萌的哆啦A梦。 HTML简介 HTML,即超文本标记语言,是构建网页的基础技术之一,它是一种标…

1.基本概念,半导体基础

1.电压降: 指电流通过阻抗负载时的电位降的大小。(线段或部件两端的电压)。 2.数量较多的载流子称为多子 3.二极管和稳压管 4.习题

AlphaFold 3:开启生物医药新革命

AlphaFold 3简介 DeepMind与Isomorphic Labs联合发布了AlphaFold 3,这是一个可以更准确预测蛋白质和其他生物分子结构及其相互作用的AI模型,标志着生物医学研究的新革命 AlphaFold 3,这款由DeepMind与Isomorphic Lab联手推出的最新人工智能…

主机扫漏:Apache Tomcat 环境问题漏洞(CVE-2023-46589)

文章目录 引言I 修复此安全问题see also引言 Apache Tomcat存在环境问题漏洞,该漏洞源于存在不正确的输入验证漏洞,可能会导致将单个请求视为多个请求,从而在反向代理后面出现请求走私。 Tomcat did not correctly parse HTTP trailer headers. A specially crafted traile…

Windows环境下代码文档生成工具Doxygen使用详细教程

背景 最近研究aom源码,发现编译需要依赖Doxygen工具,故此篇博客详细记录下Doxygen的安装和使用。 Doxygen Doxygen 是一个强大的源代码文档生成工具,它支持多种编程语言,能够直接从源代码中的注释提取文档,并生成多…

【Linux】调试器-gdb使用

大家好,我是苏貝,本篇博客带大家了解Linux的编译器-gcc/g,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1. 背景(A) 看大小(B) 查看ELF格式的文件 2.使用(A) 进入gdb(B) quit/q&#xff…

Mybatis进阶详细用法

目录 条件构造器 案例 自定义SQL 案例 Service接口 案例 综合案例 条件构造器 案例 Testvoid testQueryMapper() {// 创建 QueryWrapper 实例QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.select("id," "username,&…

Linux系统编程:进程控制

1.进程创建 1.1 fork函数 fork&#xff08;&#xff09;通过复制调用进程来创建一个新进程。新进程称为子进程&#xff0c;是调用进程的精确副本 进程&#xff0c;但以下几点除外&#xff1a; 子进程有自己的PID&#xff0c;此PID与任何现有进程组的ID不匹配子进程的父进程ID…

【java-数据结构14-双向链表的增删查改2】

上一篇文章中&#xff0c;我们已经对双向链表进行一些基本操作&#xff0c;本篇文章我们继续通过对链表的增删查改来加深对链表的理解~同时有任何不懂的地方可以在评论区留言讨论&#xff0c;也可以私信小编~觉得小编写的还可以的可以留个关注支持一下~话不多说正片开始~ 注意…

【精读Yamamoto】方向性连接如何丰富神经网络的功能复杂度 | 体外神经元培养实验 | 脉冲神经元模型(SNN) | 状态转移模型

探索大脑的微观世界&#xff1a;方向性连接如何丰富神经网络的功能复杂度 在神经科学领域&#xff0c;理解大脑如何通过其复杂的网络结构实现高级功能一直是一个核心议题。最近&#xff0c;一项由Nobuaki Monma和Hideaki Yamamoto博士领导的研究为我们提供了新的视角&#xff…

Docker 入门篇(八)-- Docker Compose 使用指南

一、Docker Compose 简介 Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配置中创建并启动所有服务。 Compose 使用…

记录接口请求偶发504 Gateway Time-out问题

项目场景&#xff1a; 我们将服务部署到A公司服务器中&#xff0c;使用了共五台服务器&#xff0c;分别是&#xff1a;1.NG服务器 2.日志服务器 3.缓存服务器 4.应用服务器1 5.应用服务器2 。而请求过来首先到达的是他们的物理代理服务器&#xff0c;然后再转发请求到我们的ng…