美文网首页vue相关知识Web前端之路让前端飞
使用Node.js和Koa框架实现前后端交互

使用Node.js和Koa框架实现前后端交互

作者: 无穷369 | 来源:发表于2017-02-23 20:37 被阅读7440次
    koa.png

    对于一个前端工程师来说不仅仅要会前端的内容,后端的技术也需要熟练掌握。今天我就要通过一个案例来描述一下前端是如何和后端进行数据交互的。

    首先,我们的服务器需要部署好Nodejs的环境,这里我用Nodejs在windows下的本地服务器来做演示。部署NodeJS环境请看我《Windows下快速搭建NodeJS本地服务器》这篇文章。

    环境部署好之后我们需要创建一个工程的目录,并且在目录中通过npm来安装Koa框架以及一些用到的依赖库。下图是我完成后的目录结构。

    1.png
    cd到你的工程目录,然后执行npm koa目录里就会多出node_modules这样一个文件夹,里边存放用到的一些依赖库。 2.png

    接下来我们创建一个app.js文件,用来设置访问服务器时用到的路由,代码如下

    var koa = require('koa');
    var controller = require('koa-route');//需要通过npm来添加此依赖
    var app = koa();
    
    var service = require('./service/WebAppService.js');//引用WebAppService.js
    
    /*设置路由*/
    app.use(controller.get('/ajax/search',function*(){
        this.set('Cache-Control','no-cache');
        this.set('Access-Control-Allow-Origin','*');
        var querystring = require('querystring');
        var params = querystring.parse(this.req._parsedUrl.query);
        var key = params.key;
        var start = params.start;
        var end = params.end;
        this.body = yield service.get_search_data(key,start,end);
    }));
    
    app.listen(3001);
    console.log('Koa server is started');
    

    node_modules文件夹内默认是没有koa-route这个依赖的,需要通过npm koa-route来安装

    然后我们需要在service目录下创建一个WebAppService.js文件,用来请求接口,代码如下

    var fs = require('fs');
    exports.get_search_data = function(key,start,end){
        return function(cb){
    
            var http = require('http');
            var qs = require('querystring');
            var data = {
                key:key,
                start:start,
                end:end
            };
    
            /*请求MobAPI里的火车票查询接口*/
            var content = qs.stringify(data);
            var http_request = {
                hostname:'apicloud.mob.com',
                port:80,
                path:'/train/tickets/queryByStationToStation?' + content,
                method: 'GET'
            };
    
            var req = http.request(http_request,function(response){
                var body = '';
                response.setEncoding('utf-8');
                response.on('data',function(chunk){
                    body += chunk;
                });
                response.on('end',function(){
                    cb(null,body);
                });
            });
    
            req.end();
        }
    }
    

    这样实际是做了一个接口的转接,我们不仅可以请求本地的接口而且还可以请求第三方接口,避免了跨域请求时浏览器阻断请求。

    接下来我们通过命令来开启服务,终端输入node app.js

    3.png
    然后在浏览器请求接口 http://localhost:3001/ajax/search?key=520520test&start=北京&end=上海 4.png

    这样我们就实现了接口请求,并获得json数据,下一章我会将这些从后端获得的数据以一种更加直观的方式呈现在界面上,并运用Vue.js框架制作一个火车票查询系统。

    请看《使用Vue.js框架搭建火车票查询系统》

    相关文章

      网友评论

      • talexie:照着你的做,报404是为什么
        talexie:@童21 好像的跨域问题吧。搜索下 koa2-cors
        de2af2dbae66:我也遇到你这个问题了,不知道你最后解决了吗
        无穷369:@talexie 应该是路径的问题,检查一下。
      • 番茄刺身:你有一个地方 var app = koa();
        少了一个new
        无穷369: @番茄刺身 这个不用new,直接调用就可以
        伏念_b342:@番茄刺身

        new 不 new 还要看koa内部实现
        伏念_b342:@番茄刺身

      本文标题:使用Node.js和Koa框架实现前后端交互

      本文链接:https://www.haomeiwen.com/subject/ofjvwttx.html