最近参考time时光网写了一个react项目,利用前端的服务器代理,妥妥的拿到了时光网的数据,别提多高兴,数据这块就省了我很多时间。但在昨晚11点准备项目上线的时候就完了。报一堆的404!我的天!没有数据还算一个项目吗?上线还有什么意思。后来想想node好像可以解决这个问题。
一:request可以从服务端发起请求的工具包
首先新建一个文件getJson.js,先下载依赖 npm init
1.安装request,npm i request
var request = require('request');
2.用法:
request('https://m.mtime.cn/Service/callback.mi/Showtime/LocationMovies.api?locationId=365&t=2020310922418780', function (error, response, data) {
if (!error && response.statusCode == 200) {
console.log(res.data) // 数据出来啦
})
但是到这一步,嗯,我的数据我应该怎么将他返回到我的前端来呢?后面看了下node官网发现可以用express解决这个问题。
二:express把Node.js的http模块功能封装在一个简单易用的接口中。Express也扩展了http模块的功能,使你轻松处理服务器的路由,响应,cookie和HTTP请求的状态,设计路由,并利用Request和Response对象发送和接收HTTP请求
1.安装express,npm i express
var express=require('express');var app =express();
2.利用路由将请求回来的数据,返回给前端
app.get('/home',function(req,res){ res.status(200), // 别网站的接口 request('https://m.mtime.cn/Service/callback.mi/Showtime/LocationMovies.api?locationId=365&t=2020310922418780', function (error, response, data) { //如果请求成功则打印数据 否则显示错误信息 if (!error && response.statusCode == 200) { // 将请求回来的数据返回给前端 res.json(data) }else { console.log(error); console.log(response.statusCode); }});
3.配置端口号
//配置服务端口 var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); })
三:新建一个index.html页面,利用ajsx请求来做示范,成功的拿到数据
<script> $.ajax({ type:'get', url:'http://localhost:3000/home', success:function(data){ console.log(data); }, error:function(){ console.log('error'); }})</script>
四:在终端运行:node getJson.js,监听端口号http://localhost:3000/home
五:在浏览器中打开:http://localhost:3000/home,下面就是请求回来的数据。