0

新的自定义 API 脚本允许通过任何类型的连接进行大量自定义。

我发现Azure 移动服务中的这个网站自定义 API – 客户端 SDK描述了自定义 API。

var client = new WindowsAzure.MobileServiceClient('http://myservice.azure-mobile.net/', 'mykey');
    client.invokeApi('query', {
        method: 'POST'
    });

但我无法运行这段代码。它应该显示一条消息“Hello post World!”。我将代码放在 HTML 文件中的标签内并运行它,但什么也没发生。

有什么帮助吗?

4

1 回答 1

2

您的呼叫正在呼叫您的服务,但它忽略了它的响应。假设您有一个名为 'query' 的自定义 API(因为它是您传递给invokeApi的内容),其正文如下:

exports.post = function(request, response) {
    response.send(200, { message: 'Hello world' });
};

您的客户端代码正在调用它并(如果一切正常)接收响应,但它没有做任何事情。有几种方法可以确定是否正在拨打电话。例如,您可以在 API 中添加日志条目并检查服务中的日志:

exports.post = function(request, response) {
    console.log('The API was called');
    response.send(200, { message: 'Hello world' });
};

或者您可以使用网络工具(例如浏览器开发人员工具或 Fiddler)来查看是否正在发出请求。或者您实际上可以在客户端对结果做一些事情:

var client = new WindowsAzure.MobileServiceClient('http://myservice.azure-mobile.net/', 'mykey');
client.invokeApi('query', {
    method: 'POST'
}).done(
    function(result) { alert('Result: ' + JSON.stringify(result)); },
    function(error) { alert('Error: ' + error); }
);

如果您从浏览器调用 API,您需要查看的一件事是加载页面的域是否在“允许来自主机名的请求”列表中,在“配置”选项卡下,“交叉-origin 资源共享 (cors) 部分。如果不是,那么您可能会收到错误而不是您想要的响应。

于 2013-07-30T17:40:33.140 回答