node.js搭建基础的后端服务接口 express

整体结构

image.png

1-安装依赖

`body-parser   express  mysql`
yarn init -y
yarn add body-parser express mysql

2-编写入口文件

app.js
//导入 post请求参数处理组件
const bodyParser=require('body-parser')

//路由
const user=require('./router/user.js') //user

//开启服务文件
const app=require('./bin/www.js')

//防止跨域
app.all('*', function (req, res, next) {
	console.log(' ')
    console.log('处理中...')
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Content-Type", "application/json;charset=utf-8");
    res.header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
    if (req.method.toLowerCase() == 'options')
        res.send(200); //让options尝试请求快速结束
    else {
        next();
    }
});

//解决post请求参数问题
app.use(bodyParser.urlencoded({
    extended: false
}))
app.use(bodyParser.json())



//注册路由
app.use('/user',user)

3-bin开启服务文件

www.js
//express插件
const express=require('express')

//顶级对象 
const app=express()

//开启服务
const serve=app.listen('518',()=>{
	let host=serve.address().address;
	let port=serve.address().port;
	if(host==='::')host='localhost';
	console.log('欢迎观霖_______: http://%s:%s',host,port)
})

//暴露
module.exports=app

4-路由

router/user.js
//express插件
const express=require('express')

//创建一个路由
const user=express.Router()

//按需导入 操作数据库的函数
const {userList}=require('../operationSql/user.js')

//按需导入 普通函数
const {success,fail}=require('../methods/resFn.js')

//编写user路由
user.get('/userList',async (request,response)=>{
	let {code,msg,data}=await userList()//数据库返回的信息
		if(code===200){
			response.send(success(msg,data))
		}else{
			response.send(fail(msg,data))
		}
})

//暴露
module.exports=user

5-封装不同的情况 像数据库发送请求

operationSql/user.js
//对数据库进行操作

//链接数据库的函数
const {openSqlServe}=require('../openSql/open.js')

//获取所有信息
function userList(){
	let cmdStr='select * from people';//数据库命令
	return openSqlServe(cmdStr).then(res=>{
		if(res){
			return {code:200,msg:'拿到数据了',data:res}
		}else{
			return {code:200,msg:'暂无数据',data:[]}
		}
	}).catch(e=>{
		console.log('数据获取失败')
		return {code:500,msg:e,data:[]}
	})
}

//暴露
module.exports={
	userList
}

6-对数据库连接 进行封装

openServe/open.js
//fn:链接数据库 操作数据库
//mysql插件
const mySql=require('mysql')

//自己数据库的配置
const {mySqlConfig}=require('../config/user.js')

//当前项目数据库
let nowSql;

//创建连接数据库fn
function linkSqlServe(){
	nowSql=mySql.createConnection(mySqlConfig);
	nowSql.connect((err)=>{
		if(err){
			linkSqlServe()
			console.log('数据库连接出错...重连中...')
		}else{
			console.log('数据库正常连接!')
		}
	});
	nowSql.on('error',(err)=>{
		  if (err.code === 'PROTOCOL_CONNECTION_LOST') {
            console.log('数据库报错..重连中...')
            linkSqlServe();
        } else {
            throw err;
        }
	})
}

//向数据库发送命令
function openSqlServe(cmdStr){
	linkSqlServe()//每次发送命令前连接一次数据库
	return new Promise((resolve,reject)=>{
		nowSql.query(cmdStr,(err,result)=>{
			if(err){
				return reject(err)
			}else{
				console.log('数据库响应成功 ^_^')
				return resolve(result)
			}
		})
	})
}

//暴露
module.exports={
	openSqlServe
}

7-数据库的配置信息

config/user.js
//我的数据库配置
const mySqlConfig={
		host:'',//主机
		port:'3306',//端口
		user:'',//用户名
		password:'',//密码
		database:'',//数据库名
		}


module.exports={
	mySqlConfig
}

8-普通函数封装

methods/resFn.js
//处理返回给前端的数据

//返回一个成功状态的数据
function success(msg,data){
	!msg&&(msg='');
	!data&&(data='');
	return {
		code:200,
		msg,
		data,
	}
}

//失败状态
function fail(msg,data){
	!msg&&(msg='');
	!data&&(data='');
	return {
		code:500,
		msg,
		data,
	}
}

module.exports={
	success,
	fail,
}

运行结果

image.png

image.png

参考:https://blog.csdn.net/weixin_47284756/article/details/118460060

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值