Forguncy 8 オンラインヘルプ
Forguncyの使い方 / コーディングによるカスタマイズ / カスタムWeb API / カスタムWeb API DLLファイルの作成
このトピックで
    カスタムWeb API DLLファイルの作成
    このトピックで
    1. Visual Studioでクラスライブラリのプロジェクトを作成します。

      フレームワークは「.NET Framework 4.7.2」に設定します。ターゲットフレームワークに「.NET Framework 4.7.2」を選択できるVisual Studioであれば、使用するVisual Studioはどのバージョンでも構いません。フレームワークは「.NET 6.0」ではないことに注意してください。ただし、必ず.NET StandardのAPIセットのみを使用するようにし、.NET Frameworkにのみ存在するAPIは使用しないようにしてください。.NET Standardに含まれるAPIであるかどうかについては、マイクロソフト社のドキュメントを確認してください。

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

      <Forguncy Builderのインストールフォルダー>¥Website¥bin¥GrapeCity.Forguncy.ServerApi.dll

    3. ソリューションエクスプローラーでプロジェクトを選択して右クリックをし、表示されるコンテキストメニューで[NuGetパッケージの管理(N)...]を選択します。

      [NuGetパッケージマネージャー]で「Microsoft.AspNetCore.Http.Abstractions」を検索し、インストールします。

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

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

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

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

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

      「GrapeCity.Forguncy.ServerApi.dll」をアップロードする必要ありませんが、そのほかにライブラリDLLファイルの参照を追加している場合には、それらのファイルもアップロードする必要があります。

      作成したDLLファイルに問題がなく、必要参照ファイルがアップロードされていれば、次の図のように使用できるWeb APIの一覧が表示されます。

    ForguncyサーバーサイドAPI

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

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

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

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

    リクエスト内容の取得

    GETメソッドやPOSTメソッドでリクエストを送信した場合、その内容はForguncyApi クラスのContext プロパティを使用して取得できます。ContextプロパティはMicrosoft.AspNetCore.Http名前空間のHttpContextクラスとなっており、RequestプロパティでHTTPリクエストのすべての情報を取得できます。

    HttpContext クラス (Microsoft.AspNetCore.Http)

    呼び出すAPIのURL

    http://[ベースURL]/customapi/[クラス名]/[メソッド名]

    Forguncy Serverに発行されたアプリケーションの場合

    ベースURL:[ドメイン名、またはホスト名]/[アプリケーション名]

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

    Forguncy Builderにおけるデバッグ実行の場合

    ベースURL:[localhost:*****]

    例:http://localhost:41264/customapi/class1/addsampledata

    定期実行

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

    レスポンスの設定

    Forguncy Serverでは、ASP.NET Coreフレームワークを使用しているため、ASP.NET Coreに基づく内容はForguncyにも適用されます。

    Get、およびPostで別のレスポンス(200以外のHTTPステータス)を返したい場合、Microsoft.AspNetCore.HttpのHttpResponse.StatusCode属性で設定します。

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

    this.Context.Response.StatusCode = 404;

    GetおよびPostで本文を返したい場合、HttpResponse.WriteAysncメソッドを使用して本文を書き込むことができます。WriteAsyncを使用する前に、「Microsoft.AspNetCore.Http」を参照する必要があることに注意してください。

    応答本文の書き込みのコード例

    this.Context.Response.ContentType = "text/html";

    this.Context.Response.WriteAsync("<h> Hello Forguncy </h> <p> Hello Test Api </p>").Wait();

    サンプルコード

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

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

    コードのコピー
    public class Class1 : ForguncyApi
    {
        [Post]
        public async Task AddSampleData()
        {
            string message = await new StreamReader(base.Context.Request.Body).ReadToEndAsync();
    
            Dictionary<string, object> values = new Dictionary<string, object>();
    
            values.Add("日時", DateTime.Now);
            values.Add("メッセージ", message);
    
            this.DataAccess.AddTableData("サンプルテーブル1", values);
        }
    }

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

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