📡

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

に公開

はじめに

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