好的,以下是一篇介绍你的Express应用程序的文章:
构建高效的Express应用程序
在这个文章中,我们将介绍一个基于Express框架的快速、高效的Web应用程序的示例。该应用程序连接到一个MySQL数据库,并提供两个路由:一个用于获取所有网站数据,另一个用于获取特定ID的网站数据。让我们一起来看看这个应用程序是如何构建的。
引入所需的模块
首先,我们需要引入Express、MySQL和body-parser模块。Express是一个Web应用程序框架,提供了一种简单的方式来设置服务器和处理HTTP请求。MySQL是一个流行的关系型数据库,我们将用它来存储网站数据。body-parser是一个中间件,用于解析请求正文中的数据。
javascript
复制
const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
创建Express应用程序实例
接下来,我们创建一个Express应用程序实例,并设置一些选项,如端口和数据库连接选项。
javascript
复制
const app = express();
const option = {
user: 'your_username',
password: 'your_password',
port: process.env.PORT || 8848,
database: 'your_database'
};
连接到MySQL数据库
然后,我们使用mysql模块创建一个数据库连接,并使用提供的选项连接到数据库。如果连接失败,我们将打印一条错误消息。如果连接成功,我们将打印一条成功消息。
javascript
复制
const connection = mysql.createConnection(option);
connection.connect((err) => {
if (err) {
console.error('数据库链接失败小火煎未发射:', err);
return;
}
console.log('链接成功火箭发射中');
});
设置CORS头和编码解析默认真
接下来,我们设置CORS头和编码解析默认真,这将允许跨域请求和解析请求正文中的数据。
javascript
复制
app.set('port', process.env.PORT || 8848);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
创建路由
现在,我们创建两个路由:一个用于获取所有网站数据,另一个用于获取特定ID的网站数据。我们将使用Express的get方法来定义这些路由,并使用回调函数来处理请求。在回调函数中,我们将执行数据库查询来获取数据,并将结果作为JSON响应发送回客户端。注意,我们在查询语句的末尾添加了一个分号(;)。
javascript
复制
app.get('/liningbo', (req, res, next) => {
const query = 'SELECT * FROM websites;'; // website是我的库你可以改成你自己的
connection.query(query, (err, results) => {
if (err) {
console.error('你无法拿到数据库的数据', err);
res.status(250).send('插入失败'); // 响应状态你想改就改,比如:res.status(200).send('查询成功'); 或者res.status(404).send('查询失败');等等... 看你想表达什么就写什么。这个响应状态也是你根据具体的情况进行修改的。你可以修改成404、500等等其他的HTTP状态码。如果一切正常的话你可以修改成200、300等其他的HTTP状态码。看你的需求进行选择和修改。别改的话直接在回调函数中写:console.error('查询失败'); 然后:return; 或者你可以修改成你自己的代码进行调试或者运行看看能不能正常运行即可。如果你能正常查询的话你可以在回调函数中写:console.log('查询成功'); 你可以根据你自己的需要修改代码即可。这里返回错误消息也是一样的道理只要能返回你想要的结果即可看你自己修改代码的功底如何了。你也可以把错误消息改成你自己的代码进行调试或者运行看看能不能正常运行即可。你也可以把错误消息改成你自己的错误消息进行测试即可。
这文章是让gpt写的我懒得写,你直接要全代码的话复制下面这个
const express = require ('express');
const mysql = require ('mysql');
const app = express();
const option = {
user:'账号',
password:'密码',
port:'端口默认3306',
database:'主表',
}
const bodyParser = require('body-parser');
app.set('port', process.env.PORT ||8848);//监听端口
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));//编码解析默认真
const connection = mysql.createConnection(option);//链接到mysql
connection.connect((err) => {
if (err) {
console.error('数据库链接失败小火煎未发射:', err);
return;
}
console.log('链接成功火箭发射中');
});
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET,POST, PUT, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
next();//请求头一般不用改
});
app.get('/liningbo',(req,res,next) => {
const query = 'SELECT * FROM websites';//website是我的库你可以改成你自己的
connection.query(query, (err,results) => {
if (err) {
console.error('你无法拿到数据库的数据',err);
res.status(250).send('插入失败')
}else {
const liningbo =results;
res.json(liningbo);
}
});//路由liningbo你想改你改了
})
app.get('/liningbo/:id',(req,res,next) => {
const id = req.params.id;//这里不要用require别问问就是路由
let query = 'SELECT * FROM websites WHERE id = ?'; //这里是查询id的方法如果你想让他分表的话⬇️是之前判断ID是否有做的判断不要了别解
// if (id !== undefined && id !== null) {
// query += WHERE id = ${id};
// }
// else {
// query += ;;
// }
connection.query(query,[id], (err,results) => {
if (err) {
console.error('你无法拿到数据库的数据',err);
res.status(500).send('插入失败')//响应状态你想改就改
}
else {
const liningbo = results; res.json(liningbo);//这里我把路由李宁波肤质给了results如果你不需要路由自己删掉直接获取results即可 } }); }); app.listen(app.get('port'), () => { console.log('******************************** 端口已启动 项目端口来自********************************', app.get('port')); }); module.exports = app;//最后需要注意的是如果保存请检查是否使用了不支持定义修改属性的参数比如const可以替换var和let