Re: [問題] node.js回傳response的問題(http)

作者: akdsy (未來的方向)   2014-11-05 21:25:32
※ 引述《akdsy (未來的方向)》之銘言:
: 以node.js作為後台
: 1.接收用戶的 http request(單元測試OK)
: 2.分析 method post的參數資料(單元測試OK)
: 3.承2,將資料送往其他web service(假設此service叫做 service1 好了,單元測試OK)
: 4.接收service1 回傳的資料再送給用戶(單元測試OK)
: 但是當我打算把以上4個過程都組合一起的時候,流程不太順暢
各位好,
我今天改了一個做法,
我把http的response也當作參數傳給了 執行service1的 method,
由此method來決定什麼時候回傳資料給用戶。
就不會造成我原本的問題,
但是我不是很確定我這樣的開發方式,
會不會會有問題,
下面有修改的地方,
麻煩各位看看
感謝
: 以下是部分的code,
: var http = require('http');
: var url = require('url');
: var querystring = require("querystring");
: var BASE_URL = "測試用IP";
: // Configure our HTTP server to respond with Hello World to all requests.
: function WebService(){
: var server = http.createServer(function (request, response) {
: var inputPath= request.url;
: var queryData = url.parse(inputPath, true).query;
: var path = url.parse(inputPath, true).pathname;
: var postData = "";//post 取得的資料
: var username="";
: var email="";
: //自訂event作為回傳訊息使用
: if(path=="/Sign"){
: if(request.method=="POST"){
: //逐步取得資料
: request.setEncoding("utf-8");
: request.addListener("data", function (postDataChunk) {
: postData += postDataChunk;
: });
: //取得所有的資料
: request.addListener("end", function () {
: //解析取得資料
: var objectPostData = querystring.parse(postData);
//產生另外一個http呼叫
//把response也當作參數
httprequestToOtherServer("123",response);
: });
: }else{
: response.end("NO DEFINE METHOD");
: }
: }
: }).listen(8888,BASE_URL);
: }
: //啟動web service
: WebService();
: //另外一個web service
: var httprequestToOtherServer = function(parameter,HTTPResponse){
: var data = querystring.stringify({
: t1:parameter,
: });
: var options = {
: host: 另一個web service的IP,
: port: 80,
: path: '/test',
: method: 'POST',
: headers: {
: 'Content-Type': 'application/x-www-form-urlencoded',
: 'Content-Length': Buffer.byteLength(data)
: }
: };
: var req = http.request(options, function(res) {
: res.setEncoding('utf8');
: //取得另一個WEB SERVICE的回傳值
res.on('data', function (chunk) {
//HTTP response在此做回傳
HTTPResponse.writeHead(200,......);
HTTPResponse.end(chunk);
});
: });
: req.on('error', function(e) {
: console.log('problem with request: ' + e.message);
: });
: req.write(data);
: req.end();
: };
作者: angke (angke)   2014-11-08 07:08:00
你可以google node-json-rpc

Links booklink

Contact Us: admin [ a t ] ucptt.com