超簡単 REST形式のWebサービス作成

.NET GadgeteerでREST形式のWebサービスを定義する方法を紹介します。

以前、.NET Gadgeteer+温度センサー+WiFiドングルでWindows Phone 7にPush Notificationを送る方法をポストしました。

これをちょっと細工して、REST形式のWebサービス化して、ネットから温度を見れるようにします。例えば、PCのブラウザで、

https://ボードのアドレス/Degree

とURLを入力すると、温度が表示されるというものです。

Program.csの、ProgramクラスのProgramStartedメソッドの最後に、次のコードを加えます。

    WebServer.StartLocalServer(wifi.NetworkSettings.IPAddress, 80);
    var degreeEvent = WebServer.SetupWebEvent("Degree");
    degreeEvent.WebEventReceived +=
        new WebEvent.ReceivedWebEventHandler(degreeEvent_WebEventReceived);

REST形式のWebサービスインターフェイスの定義は以上!!

最初の行で、.NET Gadgeteerボード上のWebサーバーを起動し、2行目と3行目で、パスがDegreeでアクセスされた時のイベントをセットし、イベントハンドラ登録の、たった3行(もっと縮めれば2行だね)で終わりです。

イベントハンドラで登録したメソッドは、

void degreeEvent_WebEventReceived(string path, WebServer.HttpMethod method, Responder responder)
{
    double deg = thermo.ReadVoltage();
    deg = deg * 78.0 / 3.3 - 22.0;
    responder.Respond(deg.ToString());
}

と、メソッドに渡されるresponder引数に対して、Respond()メソッドをコールしてあげれば、値を返せます。

実際にやってみた結果は、

見事、温度センサーが計測した温度を表示できました。

とても簡単です。今後、パラメータの渡し方や、XMLデータを返す方法なども、紹介する予定