由於咱們部門打算用node請求restful 而後慢慢替換掉服務端,之後直接請求soa的接口,讓前端的數據更貼切項目,由於咱們服務端接口和app公用一套,因爲業務的需求和版本不統一(例如app6.4的接口,H5可能只用到6.0)常常變更啥啥啥啥,因此咱們前端經常還要通過1層dataformat(舊的業務代碼改動代價太大),反正若是能實行,可行的話 將讓前端帶來更薄、更溫馨的體驗(就差夜用更長了 哈哈)。
今天別人說想用C#封裝api,再調用V8解析咱們寫的js代碼 而達到咱們通常前端人員也能寫處理接口的代碼;我一聽就建議他能用node最好用node ,不必用C#封一層,性能誰好誰壞沒有測過先不說,可是有一點很致命的是,咱們組的前端就他一個比較精通C#的代碼,若是他走了,接下來的攤子誰維護? 我表達了個人觀點,但他一面不採納,拋下一句:你用node能搭建出和我C#同樣的穩定代碼,你能夠用node。 我聽後不爽,我決定接下來的時間,我要研究node。今天第一步,寫個筆記。
好不扯淡
說到要請求post,get,那是否是應該要有一個服務接口,那我就先搭建一個php服務,獲取get和post數據,爲了簡單展現,直接輸出獲取到的數據。php
<?php $name = $_GET['name']; $age = $_POST['age']; $db = $_POST['db']; $response_obj->name = $name; $response_obj->age = $age; $response_obj->sb = $db; echo json_encode($response_obj); ?>
好我們php服務寫好了,第二步就是用node去調用咱們寫好的php接口了前端
var http = require('http'); //建立一個http服務 http.createServer( function(request, //客戶端發來的請求,node.js 幫咱們封裝成 request 對象 response //咱們利用response,向客戶端發送回答 ){ //在控制檯顯示request對象 var querystring = require('querystring'); var data=querystring.stringify({age:22, db: 'bbbbb'}); var http = require('http'); var opt = { method: "POST", host: "127.0.0.1", port: 80, path: "/demo/test.php?name=xmzzaaaa", headers: { "Content-Type":"application/x-www-form-urlencoded", "Content-Length": data.length } }; //發送一個請求 var req = http.request(opt, function (serverFeedback) { //console.log(serverFeedback.statusCode); serverFeedback.on('data', function (chunk) { //response.end('BODY: ' + chunk); response.end('response ' + chunk); //console.log('response ', chunk); }).on('end', function (chunk) { console.log('end'); }); return; }).on('error', function(e) { console.log("Got error: " + e.message); }); console.log('ccc'+data); req.end(); }).listen(888); console.log('Server start at 888');
而後再運行咱們的node腳本 : node request2.jsnode
最後訪問咱們的node服務地址: http://localhost:888
輸出正常 ,ko,第一步踏出了,其餘還有神馬可怕的 哈哈哈哈json