使用Node.js和Koa框架實現(xiàn)前后端交互

koa.png

對于一個前端工程師來說不僅僅要會前端的內(nèi)容,后端的技術(shù)也需要熟練掌握。今天我就要通過一個案例來描述一下前端是如何和后端進行數(shù)據(jù)交互的。

首先,我們的服務器需要部署好Nodejs的環(huán)境,這里我用Nodejs在windows下的本地服務器來做演示。部署NodeJS環(huán)境請看我《Windows下快速搭建NodeJS本地服務器》這篇文章。

環(huán)境部署好之后我們需要創(chuàng)建一個工程的目錄,并且在目錄中通過npm來安裝Koa框架以及一些用到的依賴庫。下圖是我完成后的目錄結(jié)構(gòu)。

1.png

cd到你的工程目錄,然后執(zhí)行npm koa目錄里就會多出node_modules這樣一個文件夾,里邊存放用到的一些依賴庫。

2.png

接下來我們創(chuàng)建一個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文件夾內(nèi)默認是沒有koa-route這個依賴的,需要通過npm koa-route來安裝

然后我們需要在service目錄下創(chuàng)建一個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();
    }
}

這樣實際是做了一個接口的轉(zhuǎn)接,我們不僅可以請求本地的接口而且還可以請求第三方接口,避免了跨域請求時瀏覽器阻斷請求。

接下來我們通過命令來開啟服務,終端輸入node app.js

3.png

然后在瀏覽器請求接口 http://localhost:3001/ajax/search?key=520520test&start=北京&end=上海

4.png

這樣我們就實現(xiàn)了接口請求,并獲得json數(shù)據(jù),下一章我會將這些從后端獲得的數(shù)據(jù)以一種更加直觀的方式呈現(xiàn)在界面上,并運用Vue.js框架制作一個火車票查詢系統(tǒng)。

請看《使用Vue.js框架搭建火車票查詢系統(tǒng)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    Myselfyan閱讀 4,197評論 2 58
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設計出JavaScri...
    w_zhuan閱讀 3,731評論 2 41
  • 是的你沒猜錯。我沒寫論文。擦擦擦擦擦擦?。?2016.2.5
    將去君閱讀 156評論 0 0
  • 李健一首翻唱許飛的(父親寫的散文詩)又一次從心底觸動了很多人柔弱的心靈,像羅永浩說的,眼睛里有一些晶瑩的小東西。 ...
    廬陵王閱讀 377評論 0 0
  • 雨水像眼淚一樣 是我身體的一部分 讓我為之喜歡 下雨天氣夾雜著 淡淡的夏天的味道 這場夏雨過去 會迎來怎樣的明天 ...
    半分微涼閱讀 218評論 2 3

友情鏈接更多精彩內(nèi)容