楼主:
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();
: };