本記事に記載しているカスタムWeb APIの各クラスの詳細については、リファレンスヘルプ「Forguncy ServerApi(カスタムWeb API)」を参照してください。
Visual Studioでクラスライブラリのプロジェクトを作成します。
フレームワークは「.NET 8」に設定します。ターゲットフレームワークに「.NET 8」を選択できるVisual Studioであれば、使用するVisual Studioはどのバージョンでも構いません。ただし、必ず.NET StandardのAPIセットのみを使用するようにしてください。.NET Standardに含まれるAPIであるかどうかについては、マイクロソフト社のドキュメントを確認してください。
Forguncy Builderのインストールフォルダに含まれる以下のDLLファイルを参照設定に追加します。
<Forguncy Builderのインストールフォルダー>¥Website¥bin¥GrapeCity.Forguncy.ServerApi.dll
プロジェクトを開き、FrameworkReferenceを直接追加します。
コードのコピー | |
---|---|
<ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> |
GrapeCity.Forguncy.ServerApi 名前空間にあるForguncyApi クラスを継承したクラスを作成します。
クライアントからのリクエストを受けて処理を行う場合、このクラスの中にGET用とPOST用のメソッドを定義します。メソッドには任意の名前を付けることができますが、GrapeCity.Forguncy.ServerApi名前空間にある[Get]と[Post]という属性をそれらのメソッドに付加します。作成したメソッド内に、ForguncyのサーバーサイドAPIを使用してForguncyの内部データベースへアクセスする処理等を記述します。
定期実行を行う場合、このクラスの中にメソッドを定義します。メソッドには任意の名前を付けることができますが、GrapeCity.Forguncy.ServerApi名前空間にある[ScheduleApi]という属性をそれらのメソッドに付加します。
Visual Studioでビルドを行いDLLファイルを作成します。
Forguncy Builderを起動し、[ファイル]リボンタブ - [オプション] - [カスタムWeb API]を選択し、[Web API DLLファイルのアップロード]を押して作成したDLLファイルを選択します。
「GrapeCity.Forguncy.ServerApi.dll」をアップロードする必要ありませんが、そのほかにライブラリDLLファイルの参照を追加している場合には、それらのファイルもアップロードする必要があります。
作成したDLLファイルに問題がなく、必要参照ファイルがアップロードされていれば、次の図のように使用できるWeb 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)
http://[ベースURL]/customapi/[クラス名]/[メソッド名]
または
https://[ベースURL]/customapi/[クラス名]/[メソッド名]
ベースURL:[ドメイン名、またはホスト名]/[アプリケーション名]
例:http://computer1/forguncyapp1/customapi/class1/addsampledata
ベース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() { // ここに処理を記述します。 } |