当前位置: 首页 > 后端技术 > Node.js

node+express学习一(项目搭建)

时间:2023-04-03 18:11:34 Node.js

开始前确保你已经安装好node和express1,初始化项目express***(***你的项目名)cd***npminstall(下载依赖)启动项目:运行命令:node./bin/www,3001端口是自己改的,在/bin/www中(推荐使用WebStorm运行,因为我们要用它来写代码)2.代码编写使用WebStorm打开项目,点击下面命令节点./bin/www效果一样。也可以在aa.js中加入app.listen(8088),然后运行http://127.0.0.1:8088(端口随便写)app.js(部分代码)varindexRouter=require('./routes/index');varusersRouter=require('./routes/users');app.use('/',indexRouter);//这里的意思是访问http://127.0.0.1:8088/users就是访问app.use('/users',usersRouter);app.listen(8088)module.exports=app;在routes/users中添加如下代码,编写接口通过代码获取微信oppenIdvarhttp=require('https');varurl=require('url');varappId='yourappaId';varsessionKey='你的sessionKey';/***获取oppenId*/router.post('/getOppenId',function(req,res,next){vardata={};data=JSON.stringify(data);varopt={//hostname:'https://api.weixin.qq.com',hostname:url.parse('https://api.weixin.qq.com').hostname,method:'get',path:`/sns/jscode2session?appid=${appId}&secret=${sessionKey}&js_code=${req.body.code}&grant_type=authorization_code`,headers:{"Content-Type":'application/json',"Content-Length":data.length}}letresponse=res;变体身体='';varreq=http.request(opt,function(res){res.on('data',function(data){body+=data;}).on('end',function(){response.json({"data":JSON.parse(body)});});}).on('error',function(e){console.log("error:"+e.message);})req.write(数据);req.end();});这样就可以通过http://127.0.0.1:8088/users/getOppenId得到oppenId注意:1.Hostname不能直接使用'https://api.weixin.qq.com',而是使用url.parse('https//api.weixin.qq.com').hostname2.获取oppenId是连接上必须拼写的参数。否则会报错:{"errcode":40013,"errmsg":"invalidappid"}3.如果使用varhttp=require('http')会报错:{"errcode":43003"errmsg":"requirehttpshint:[gyW4pa0803re59]","expires_in":null},不知道是不是因为我调用的是https还是什么,第三方接口要不要改,没试过it*如果直接再这样调用,可能会出现跨域,在app.js中添加如下代码解决跨域;app.all('*',function(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');res.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS');if(req.method=='OPTIONS'){//res.send(200);/让选项请求快速返回/res.sendStatus(200)}else{next();}});下sequelize操作数据库链接的描述只是菜鸟,有错请轻喷,忘了指出