Windows Azure の モバイルサービス

モバイル サービスについて

Windows Azure で利用できるサービスの一つに モバイル サービス というのがあります。

モバイルサービスと書かれてしまうとなんなのか判りづらいのですが、

  • REST 経由で使用可能なデータベース(20MBytes の場合は無料)
  • 認証機能
  • モバイルへのプッシュ通知
  • スケジュール

といったサービスをセットで提供してくれるものとなります。

ちなみにウェブサービスを提供するものなので、ウェブサイト用のスペースは提供されません。(ウェブサイトが必要な場合は、別途 web sites や virtual machines の契約が必要です)

モバイルサービスを開始すると、以下の様な画面が表示されてサンプルコードや組み込み例を提供してくれます。

azure_mobileservice

提供してくれるのはありがたいのですが、 Python 用のサンプルコードがありませんでした。

というわけでメモがてら記述しておきます。

REST insert / select / update / delete

# -*- coding: utf-8 -*-
import sys
import httplib
import urllib
import json

API_HOST = "xxxxxxxx.azure-mobile.net"
API_CODE = "xxxxxxxx"


def insert(table_name, id):

    oCHttp = httplib.HTTPSConnection(API_HOST)
    
    jsonData = json.dumps({"id": id, "text": "ABCD"})
    
    dictHead = {
        "Accept": "application/json",
        "X-ZUMO-APPLICATION": API_CODE,
        "Content-Type": "application/json",
        "Host": API_HOST,
        "Content-Length": len(jsonData)
    }
    
    
    oCHttp.request("POST", "/tables/" + table_name, jsonData, dictHead)
    oCRes = oCHttp.getresponse()

    print oCRes.status
    print oCRes.read()


def select(table_name):

    oCHttp = httplib.HTTPSConnection(API_HOST)

    dictHead = {
        "Accept": "application/json",
        "X-ZUMO-APPLICATION": API_CODE,
        "Host": API_HOST
    }

    urlParam = urllib.urlencode(
        {
            "$filter": "text eq 'ABCD'"
        }
    )

    oCHttp.request("GET", "/tables/" + table_name + "?" + urlParam, None, dictHead)
    oCRes = oCHttp.getresponse()
    
    print oCRes.status
    print oCRes.read()


def update(table_name, id):

    oCHttp = httplib.HTTPSConnection(API_HOST)
    
    
    jsonData = json.dumps({"text": "EFGH"})
    
    dictHead = {
        "Accept": "application/json",
        "X-ZUMO-APPLICATION": API_CODE,
        "Content-Type": "application/json",
        "Host": API_HOST,
        "Content-Length": len(jsonData)
    }

    oCHttp.request("PATCH", "/tables/" + table_name + "/" + id, jsonData, dictHead)
    oCRes = oCHttp.getresponse()

    print oCRes.status
    print oCRes.read()


def delete(table_name, id):

    oCHttp = httplib.HTTPSConnection(API_HOST)

    dictHead = {
        "X-ZUMO-APPLICATION": API_CODE,
        "Host": API_HOST
    }

    oCHttp.request("DELETE", "/tables/" + table_name + "/" + id, None, dictHead)
    oCRes = oCHttp.getresponse()
    
    print oCRes.status
    print oCRes.read()


insert("test_table", "1")
select("test_table")
update("test_table", "1")
delete("test_table", "1")

 ■

どうという事のないコードですが、適当に記述するとこのような感じです。

Azure モバイル サービスの REST API リファレンス

http://msdn.microsoft.com/library/jj710108.aspx

上に記載したコードには select に関して単純なフィルターしか指定していませんが、色々な条件を指定する事が出来ます。

$filter の指定方法は、OData の URL Conventions に記載されています。