カスタムWeb API DLLファイルを作成する

1 Visual Studioでクラスライブラリのプロジェクトを作成します。

ターゲットフレームワークは「.NET Framework 4.6」に設定します。ターゲットフレームワークに「.NET Framework 4.6」を選択できるVisual Studioであれば、使用するVisual Studioはどのバージョンでも構いません。

2 Forguncyのインストールフォルダに含まれる以下の2つのDLLファイルを参照設定に追加します。

 

●C:\Program Files(x86)\Forguncy\Website\bin\GrapeCity.Forguncy.ServerApi.dll

●C:\Program Files (x86)\Forguncy\Website\bin\Microsoft.Owin.dll

3 GrapeCity.Forguncy.ServerApi 名前空間にあるForguncyApi クラスを継承したクラスを作成します。

クライアントからのリクエストを受けて処理を行う場合、このクラスの中にGET用とPOST用のメソッドを定義します。メソッドには任意の名前を付けることができますが、GrapeCity.Forguncy.ServerApi名前空間にある[Get]と[Post]という属性をそれらのメソッドに付加します。作成したメソッド内に、ForguncyのサーバーサイドAPIを使用してForguncyの内部データベースへアクセスする処理等を記述します。

定期実行を行う場合、このクラスの中にメソッドを定義します。メソッドには任意の名前を付けることができますが、GrapeCity.Forguncy.ServerApi名前空間にある[ScheduleApi]という属性をそれらのメソッドに付加します。

4 Visual Studioでビルドを行いDLLファイルを作成します。

 

5 Forguncy Builderを起動し、[ファイル]→[オプション]→[カスタムWeb API]を選択し、[Web API DLLファイルのアップロード]を押して作成したDLLファイルを選択します。

「GrapeCity.Forguncy.ServerApi.dll」と「Microsoft.Owin.dll」をアップロードする必要ありませんが、その他にライブラリDLLファイルの参照を追加している場合には、それらのファイルもアップロードする必要があります。
作成したDLLファイルに問題がなく、必要参照ファイルがアップロードされていれば、次の図のように使用できるWeb APIの一覧が表示されます。

 

ForguncyサーバーサイドAPI

Forguncyのサーバーサイドで提供するAPIは、データベースへのアクセス(テーブルデータの取得や更新など)、メール送信、定期実行、ユーザーアカウント情報の管理に関するものです。

データベースへのアクセスに使用するメソッドはForguncyApi クラスのDataAccess プロパティを経由して使用します。詳細はIDataAccess インターフェイスを参照してください。

メール送信のためのメソッドはForguncyApi クラスのEmailSender プロパティを経由して使用します。詳細はIEmailSenderインターフェイスを参照してください。

ユーザーアカウント情報の管理のためのメソッドはForguncyApiクラスのUserInfos プロパティを経由して使用します。詳細はIUserInfos インタフェースを参照してください。

リクエスト内容の取得

GETメソッドPOSTメソッドでリクエストを送信した場合、その内容はForguncyApi クラスのContext プロパティを使用して取得できます。このフィールドはMicrosoft.Owin 名前空間IOwinContext 型となっているため、Request プロパティを使用してリクエストのBody等を取得できます。

IOwinContextインターフェイス (Microsoft.Owin)

呼び出すAPIURL

http://[ドメイン名、またはホスト名]/[アプリケーション名]/customapi/[クラス名]/[メソッド名] 

例:http://computer1/forguncyapp1/customaip/class1/addsampledata

定期実行

定期実行の場合、クライアントからのリクエストによりメソッド内の処理が実行されるわけではないため、[ScheduleApi]属性を付加したメソッド内では、ForguncyApi クラスのContext プロパティは常にNullが返されます。

レスポンスの設定

Forguncy Serverの内部では、Microsoft社がOWINの仕様に基づいて実装したKatanaというライブラリを使用しています。そのため、Microsoft社のリファレンスの「Microsoft.Owin 名前空間」の内容がForguncyでも適用されます。

GetおよびPost時にレスポンス(200以外のHTTP Status)を返すには、Microsoft.Owinの IOwinResponse.StatusCodeプロパティから設定できます。

サンプルコード:HTTP Status(例では404)のステータスコードを返しています。
 this.Context.Response.StatusCode = 404;

GetおよびPost時にレスポンス(Body)を返すには、IOwinResponse.Writeメソッド (String)を使用して本文を書き込むことができます。なお、Writeメソッドはいくつかのオーバーロードがあり、例えば非同期処理のWriteAsyncメソッドにもあります。

サンプルコード:本文を書き込んでいます。
this.Context.Response.ContentType = "text/html";
this.Context.Response.Write("<h>Hello Forguncy</h><p>Hello Test Api</p>");

サンプルコード

各メソッドを使用したサンプルコードについては、リファレンスのそれぞれのメソッドのページに記載されています。

以下のサンプルコードは、POSTメソッドで送信されてきた内容を、その時点の日付、IPアドレスと共に「サンプルテーブル1」テーブルへ追加するものです。

public class Class1 : ForguncyApi
{
    [Post]
    public void AddSampleData()
    {
        StreamReader reader = new StreamReader(this.Context.Request.Body);
        string message = reader.ReadToEnd();

        Dictionary<string, object> values = new Dictionary<string, object>();

        values.Add("日時", DateTime.Now);
        values.Add("メッセージ", message);
        values.Add("IPアドレス", Context.Request.RemoteIpAddress);

        this.DataAccess.AddTableData("サンプルテーブル1", values);
    }
}

以下は、定期実行の処理を記述するサンプルコードです。

// 毎日午前0時にこのメソッドが実行されます。
[ScheduleApi("0:0:0","1")]
public void SampleScheduleApi1()
{
     // ここに処理を記述します。 
}

// 1時間ごとにこのメソッドが実行されます。
[ScheduleApi("1:0:0")]
public void SampleScheduleApi2()
{
     // ここに処理を記述します。
}