Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs+;Q承诺+;基于url类型的方法返回_Javascript_Node.js_Api_Url_Q - Fatal编程技术网

Javascript Nodejs+;Q承诺+;基于url类型的方法返回

Javascript Nodejs+;Q承诺+;基于url类型的方法返回,javascript,node.js,api,url,q,Javascript,Node.js,Api,Url,Q,我使用NodeJS作为后端,也使用QPromise包 问题:我正在尝试获取第三方产品的详细信息。 1.www.abcd.com 2。www.xyz.com-我在后端处理此方法 可能的url: localhost:8080/search?type=“abcd” localhost:8080/search?type=“xyz” 本地主机:8080/搜索 如果上述URL类型为abcd则表示需要搜索不同的第三方(www.abcd.com)http URL 如果上面的URL类型是xyz意味着需要搜索其他不

我使用NodeJS作为后端,也使用QPromise包

问题:我正在尝试获取第三方产品的详细信息。 1.www.abcd.com 2。www.xyz.com-我在后端处理此方法

可能的url:

  • localhost:8080/search?type=“abcd”
  • localhost:8080/search?type=“xyz”
  • 本地主机:8080/搜索

    如果上述URL类型为abcd则表示需要搜索不同的第三方(www.abcd.com)http URL

    如果上面的URL类型是xyz意味着需要搜索其他不同的第三方(www.xyz.com)http URL

    如果上述URL未获取类型,则表示需要搜索www.xyz.com如果找到结果,则表示返回响应;如果未找到结果,则表示需要调用www.xyz.com URL,然后返回响应。(注意-此处需要调用两个第三方api)

  • 代码:

    我认为这是一个冷冰冰的问题。我知道需要检查类型和执行情况。我认为我们需要为两者添加一些不同的函数(abcd和xyz),然后可以根据类型调用该方法

    请建议好的方法

    router.get('/search', function(req, res, next) {
    
        if (!( typeof req.query === 'undefined' || req.query === null || req.query == "")) {
            var type = req.query;
        }
    
        var spec = {
            resp : {}
        };
    
        Q(spec).then(function(spec) {
            var deferred = Q.defer();
    
            var optionsget = {
                host : 'abcd.com',
                method : 'GET'
            };
    
            var reqGet = https.request(optionsget, function(res) {
                var getProductInfo = '';
                res.on('data', function(d) {
                    getProductInfo += d;
                });
    
                res.on('end', function() {
                    if (( typeof message == 'undefined') && (!( typeof items === 'undefined' || items === null))) {
                        spec.resp.list = items;
                        deferred.resolve(spec);
                    } else {
                        spec.resp.message = message;
                        deferred.reject(spec);
                    }
                });
    
            });
            reqGet.end();
            reqGet.on('error', function(e) {
                console.log(e);
                deferred.reject(spec);
            });
    
            return deferred.promise;
        }).then(function(spec) {
            var deferred = Q.defer();
    
            var optionsget = {
                host : 'xyz.com',
                method : 'GET'
            };
    
            var reqGet = https.request(optionsget, function(res) {
                var getProductInfo = '';
                res.on('data', function(d) {
                    getProductInfo += d;
                });
    
                res.on('end', function() {
                    if (( typeof message == 'undefined') && (!( typeof items === 'undefined' || items === null))) {
                        spec.resp.list = items;
                        deferred.resolve(spec);
                    } else {
                        spec.resp.message = message;
                        deferred.reject(spec);
                    }
                });
    
            });
            reqGet.end();
            reqGet.on('error', function(e) {
                console.log(e);
                deferred.reject(spec);
            });
    
            return deferred.promise;
        }).then(function(spec) {
            spec.resp.status = 'Success';
            res.send(spec.resp);
        }).fail(function(spec) {
            spec.resp.status = 'Error';
            res.send(spec.resp);
        });
    
    });