如何使用 Azure 移动服务 API 功能

Posted

技术标签:

【中文标题】如何使用 Azure 移动服务 API 功能【英文标题】:How to use the Azure Mobile Service API feature 【发布时间】:2013-06-12 23:09:28 【问题描述】:

API 功能已添加到 WAMS,我可以在其中定义自定义脚本。这似乎不赞成以前创建脚本表的做法。但是,我找不到任何关于如何使用它的描述。

哪些客户端可以访问此功能?可以在 iosjavascript 中使用吗?

【问题讨论】:

【参考方案1】:

还有一些关于这个主题的帖子:http://blogs.msdn.com/b/carlosfigueira/archive/2013/06/14/custom-apis-in-azure-mobile-services.aspx(服务器端)和http://blogs.msdn.com/b/carlosfigueira/archive/2013/06/19/custom-api-in-azure-mobile-services-client-sdks.aspx(客户端)。

此外,由于您使用 ios 标记了您的问题,以下是您使用 MSClient 类的实例调用 API 的代码:

如果您的 API 只处理(接收/返回)JSON 数据:

MSClient *client = [MSClient clientWithApplicationURLString:@"https://your-service.azure-mobile.net"
                                             applicationKey:@"your-application-key"];
[client invokeApi:@"calculator/add"
             body:nil
       HTTPMethod:@"GET"
       parameters:@@"x":@7, @"y":@8  // sent as query-string parameters
          headers:nil
       completion:^(id result, NSURLResponse *response, NSError *error) 
    NSLog(@"Result: %@", result);
];

或使用请求正文 (POST):

[client invokeApi:@"calculator/sub"
             body:@@"x":@7, @"y":@8   // serialized as JSON in the request body
       HTTPMethod:@"POST"
       parameters:nil
          headers:nil
       completion:^(id result, NSHTTPURLResponse *response, NSError *error) 
    NSLog(@"Result: %@", result);
];

如果您的 API 处理非 JSON 数据,您可以使用其他选择器,该选择器采用 / 返回 NSData 对象:

NSData *image = [self loadImageFromSomePlace];
[client invokeApi:@"processImage"
             data:image
       HTTPMethod:@"POST"
       parameters:nil
          headers:nil
       completion:^(NSData *result, NSHTTPURLResponse *response, NSError *error) 
    NSLog(@"Result: %@", result);
];

【讨论】:

已发布的框架存档和 GitHub 存储库之间是否存在一些延迟? github.com/WindowsAzure/azure-mobile-services repo 尚不包含此添加内容。 通常在 SDK 发布几天后的 repo 中。我猜到下周初它应该在那里...... 所以我已经尝试了你所展示的内容,虽然我确实得到了两个对象的结果,但它们总是显示为空白。想法? [self.client invokeAPI:@"pointsbygameperuser" body:nil HTTPMethod:@"GET" parameters:@@"Id":item // 作为查询字符串参数发送 headers:nil completion:^(NSArray *result, NSURLResponse *response, NSError *error) NSLog(@"Result: %d", [result count]); ];【参考方案2】:

这可能会有所帮助:What’s new in Windows Azure Mobile Service : Api Script

【讨论】:

伟大的发现!请在您的答案中添加几行解释,使其更加独立,我会立即接受。【参考方案3】:

我也找到了这个帮助:

http://www.windowsazure.com/en-us/develop/mobile/tutorials/create-pull-notifications-dotnet

基本上,您可以使用这种端点格式访问您的自定义 API:

https://service_name.azure-mobile.net/api/api_name

把它放在你的脚本上:

exports.get = function(request, response)     
    response.send(200, "Hello World");
;

并在 GET 上设置您的 API 权限以允许所有人,然后您可以使用浏览器或 fiddler 通过访问端点来测试您的 API:

https://service_name.azure-mobile.net/api/api_name

如果您没有更改您的许可,您必须在您的请求中添加如下标头代码:

GET https://service_name.azure-mobile.net/api/test HTTP/1.1
User-Agent: Fiddler
Content-type: application/json
X-ZUMO-APPLICATION: your-manage-key-here

【讨论】:

以上是关于如何使用 Azure 移动服务 API 功能的主要内容,如果未能解决你的问题,请参考以下文章

Azure 移动服务 Web Api 上的 SignalR CORS

如何使 azure redis 服务的公共链接和私有端点链接同时工作

Azure API管理与逻辑功能

系列视频Azure 移动服务的后端开发

仅使用 Azure 移动服务 .Net 后端进行推送

如何使 Azure 应用服务容器崩溃