使用express框架搭建node.js后端服务

使用express框架搭建node.js后端服务

1.首先要先安装一些依赖(这里使用的是npm)

(1).下载安装express

npm  install  express
//下载 express 框架

(2).下载安装 bady-parser

npm install  bady-parser
//用于解析 json  text 等格式的数据

(3).下载安装 cookie-parser 和cookie-session依赖

npm install cookie-parser
npm install cookie-session
//用于解析cookie 

2.node.js服务的入口文件的编写(启动文件的编写): 这里我命名为 server.js 文件

//引入上面下载安装好的 express 框架模块
const  express=require('express');
//引入bady-parser 用于解析 json text等格式的数据
const badyParser=require('bady-parser');
//引入cookie 解析模块
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');

//利用express模块方法生成 express对象
const  server=express();

//解析 json数据             解析头文件为   application/json 
server.use(bodyParser.json());

//使用 express 对象设置传输数据键值对的格式    use方法就是引入使用一个只中间件   解析头文件为  application/x-www-form-urlencoded
server.use(bodyParser.urlencoded({ extended:false }));  // 解析请求体中的信息 并将返回的数据存入request 的 body中, 只支持utf-8的编码的字符,也支持自动的解析gzip和 zlib         设置为false 则数据的值 为string array类型,设置为true 则为任何类型

//为所有的请求接口做一些处理:例如跨域...
//* 是匹配所有  server.all()方法是最先执行的中间件,所有 server.use()的中间件都会先经过all

server.all('*',(req,res,next)=>{
	//设置允许任何域访问      解决跨域问题
	res.header('Access-Control-Allow-Origin','*');
	//设置  允许任何 数据类型
	res.header('Access-Control-Allow-Headers','Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
	//设置 允许 使用的HTTP方法
	res.header('Access-Control-Allow-Methods','PUT, POST, GET, DELETE, OPTIONS');

	//过滤预请求
	if(req.method==='OPTIONS'){
		res.send(200);  //如果是预请求 就不再进行后面的中间件匹配执行了   直接发送回数据
	}else{
		next();//  进入下一个中间件  
	}
})

//监听的端口号
server.listen(3000,()=>{
	console.log("正在监听3000端口");
})
//匹配到 /  就会执行:     所以我所有前端的请求接口前面都会加/     -----eg:    /getInfo      /deleteInfo
server.use('/',require('./route/index.js')());

3.创建 index.js 文件 (用于连接操作数据库的文件)

//由于还是要使用到express模块所以继续引入
const express=require('express');

//引入数据库模块   这里我使用的是mysql       使用什么引入什么
const  mysql=require('mysql');

//创建连接池   请求过一次之后,会有缓存之后请求就不用重新连接数据库了  从而减少了连接数据库的次数  提高效率
const db=mysql.createPool({
	host:'localhost',//数据库的地址         我这里是在我本地  所以写的是 localhost
	user:'root',   //数据库登陆名
	password:'root', //数据库登陆密码      这里我设置的都是 root  
	database:'test'     //连接的库名       这里我使用的是 test 数据库
})

//导出 一个箭头函数  所有的接口逻辑  都在这个函数内
module.exports= ()=>{
	//创建 路由 路径 的链式句柄
	const route=express.Router();   //后面定义一个接口  就直接使用 route.xxx 即可
	conts getInfoStr=`SELECT id,user,message,test,is_vip FROM firsttable`;//获取表格信息
	/*  
	...  接口
	定义一个get请求接口      接口名为:/getInfo
	eg:  route.get('/getInfo',(req,res)=>{
		 		 getInfo(getInfoStr,res); //调用方法  并且将res传入  用于发送数据
		})
		function getInfo(getInfoStr,res){
			//使用连接池对象调用  query进行数据库操作    第一个参数为 sql操作语句
			db.query(getInfoStr,(err,data)=>{
				if(err){//出错了
					res.status(500).send('database err').end();//将响应状态值设置为500 并且返回  database err 字符串   end()方法是为了防止客户端没有接收到数据而一直处于等待状态
				}else{//没出错
						res.send(data)
				}
			})
		}

		设置一个post接口
		
		  route.post('/addInfo',(req,res)=>{
		 // 获取post 请求客户端传的数据      get请求 是使用  req.query.xxx访问   传的数据都存储在req.query里面了
		 let obj={};
		 for(let  attr  in req.body){   // req.body === {'前端传过来的数据对象': ''}      所以 取到前端传过来的对象需要取  req.body 的键名  并且还要将其转化为 普通对象  (因为他是字符串对象)        
			 obj=JSON.parse(attr);
		 }
		 console.log(req.body);
		 console.log(obj);
		 let {user,message,is_vip,test}=obj;
		 message=JSON.stringify(message);
		 test=JSON.stringify(test);
		 //添加数据的 数据库 命令
		 let addInfoStr=`INSERT INTO firsttable(user,message,is_vip,test) VALUES('${user}','${message}','${is_vip}','${test}')`;
		 addInfo(addInfoStr,res);
	  })
	  function addInfo(addInfoStr,res){
		  db.query(addInfoStr,(err,data)=>{
			  if(err){
				  console.log(err);
				  res.status(202).send({'msg':err.sqlMessage,'status':500}).end();//调用end方法防止 客户端一直等待响应数据   
			  }else{
				  res.send({"msg":"添加成功!","status":200,"data":data}).end();
			  }	
		  })
		  
	  }
	*/
}

实现一些简单增删改查的接口大致模板就是这样。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值