从Azure中的另一个API调用API

时间:2016-05-03 13:05:52

标签: javascript api azure azure-mobile-services

我尝试使用JavaScript在移动服务中调用另一个API,但收到此错误:

  

脚本错误' /api/*api_name*.js'。 TypeError:对象函数(响应){   [外部代码]       at exports.post.httpRequest.get.mssql.query.success.mssql.query.success(D:\ home \ site \ wwwroot \ App_Data \ config \ scripts \ api \ * api_name * .js:49:36)       [外部代码]

API(我称之为另一个API函数):

var api_name = require('../api/*api_name*.js');

exports.post = function(request, response) {
    api_name.post(request, function(response) {
        console.log("test")
    })
};

另外,使用iOS Azure SDK调用* api_name * .js也没问题。

所以,我无法弄清楚如何从另一个调用一个JS API。

如果有人能解释我会很棒。谢谢!

1 个答案:

答案 0 :(得分:2)

我假设您的自定义API名称不包含'*'字符,并且您已使用'* api_name *'替换自定义API的实际名称 - 您不能在加载的模块名称中使用通配符有要求。

虽然应该可以直接要求另一个API模块,但建议您将公共代码重构为共享模块。将其放在站点的/ shared文件夹中,并使用以下语法引用该模块:

var sharedModule = require('../shared/sharedModule');

如果您需要传递自定义成功或错误处理程序,您可以执行以下操作:

API / api1.js

var shared = require('../shared/sharedModule');

exports.get = function(request, response) {
    shared(request, response, 'table1', function(results) {
        if(results.length == 1)
            response.send(200, results[0]);
        }
    });
};

API / api2.js

var shared = require('../shared/sharedModule');

exports.get = function(request, response) {
    shared(request, response, 'table2', function(results) {
        if(results.length == 5)
            response.send(200, "Correct number of records");
        else
            response.send(400, "Incorrect number of records");
    });
};

共享/ sharedModule.js

module.exports = function (request, response, table, success) {
    request.service.mssql.query("SELECT COUNT(*) FROM " + table, {
        success: success,
        error: function (error) {
            response.send(500, error);
        }
    });
}

这为每次调用使用相同的错误处理程序,您也可以每次都传递一个自定义错误处理程序。