💻

Avanade Beef で作成した API をカスタム コネクタとして使用する

2023/04/07に公開

はじめに

Avanade Beef (以下、Beef) は ASP.NET Core をベースとする Web API の自動生成ツールです。

https://github.com/Avanade/Beef

概要については以下のスライドもご覧ください。

Beef Web API をカスタム コネクタとして使用する

Beef で作成した API は RESTful Web API なので Power Platform のカスタム コネクタとして使用することができます。ただしいくつかの注意点があります。

OpenAPI (Swagger) が読み込めない

カスタム コネクタは一から定義する方法と、OpenAPI (Swagger) や Postman コレクションからインポートする方法があります。Beef は既定で Swashbuckle が組み込まれているため、OpenAPI (Swagger) の JSON が自動生成されるのですが、これを実施しようとするとエラーが発生します。というのも、カスタム コネクタで使用できるスキーマのバージョンは 2.0 ですが、Beef が生成するスキーマのバージョンは 3.0 です。

https://learn.microsoft.com/ja-jp/connectors/custom-connectors/define-openapi-definition?WT.mc_id=M365-MVP-5002941

これを防ぐには Startup.cs を修正します。

- app.UseSwagger();
+ app.UseSwagger(option =>
+ {
+     option.SerializeAsV2 = true;
+ });

意図しないモデルが読み込まれる

上記を実施すると、JSON をインポートできるようになるのですが、ものすごく動作が遅くなります。確認すると JSON ファイルに余計なモデルの定義が含まれていることが原因であることがわかります。

ページングのパラメーターが表示されない

YAML ファイルで paging: true とするとページングを有効化することができますが、そのパラメーターである $page$size$count などは OpenAPI (Swagger) の JSON には反映されません。

おわりに

以上の問題があるため、現状ではカスタム コネクタは一から定義することをおすすめします。なお、上記の問題はすでに Issue を上げています。参考までに。

https://github.com/Avanade/Beef/issues/208

https://github.com/Avanade/Beef/issues/209

Discussion