Node.js擷取GET/POST資料

來源:互聯網
上載者:User

標籤:

目標:使用Node.js搭建簡單伺服器提供簡單介面,達到兩數字加減乘除計算並返回json結果。(通用GET/POST)

知識點

  1. 擷取GET資料
  2. 擷取POST資料
  3. 瞭解監聽事件

實現

var http = require("http");            //提供web服務  var url = require("url");            //解析GET請求  var query = require("querystring");    //解析POST請求//服務var server = function(request,response){      //定義報文頭    response.writeHead(200,{"Content-Type":"text/json"});    //判斷是GET/POST請求    if(request.method == "GET"){        var params = [];        params = url.parse(request.url,true).query;        params[‘fruit‘] = compute(params);        response.write(JSON.stringify(params));        response.end();    }else{        var postdata = "";        request.addListener("data",function(postchunk){            postdata += postchunk;        })        //POST結束輸出結果        request.addListener("end",function(){            var params = query.parse(postdata);            params[‘fruit‘] = compute(params);            response.write(JSON.stringify(params));            response.end();        })    }}//計算var compute = function(params){      switch(params[‘type‘]){        case "add": return parseFloat(params[‘num‘]) + parseFloat(params[‘num1‘]);break;        case "subtract": return parseFloat(params[‘num‘]) - parseFloat(params[‘num1‘]);break;        case "multiplication": return parseFloat(params[‘num‘]) * parseFloat(params[‘num1‘]);break;        case "division": return parseFloat(params[‘num‘]) / parseFloat(params[‘num1‘]);break;    }}//開啟服務在127.0.0.1:8080http.createServer(server).listen(8080);  console.log("Server start!");  

 

值得注意的是由於POST品質過大,所以不能像GET請求那樣直接拿去資料。需要增加監聽事件,並且在POST結束前都不能結束應答(response)完成報文流,所以要把輸出、結束放到監聽結束事件裡。

測試

GET:http://127.0.0.1:8080/?num=32&num1=13&type=add 
//print {"num":"32","num1":"13","type":"add","fruit":45}

POST: 
我測試POST使用的是chrome外掛程式postman,當然它一樣可是測試GET請求。它包含所有請求類型(delete、put、copy、patch、lock等)

Node.js擷取GET/POST資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.