超簡単 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データを返す方法なども、紹介する予定