node解决跨域,写接口

419 阅读2分钟

最近参考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,下面就是请求回来的数据。