🍏
UnityでOpenApi Generatorを使ってみる
これの通りで動くようになる
環境
mac: Apple M2 Max
untiy: 6 (6000.0.38f1)
openapi-generator-cli: 7.12.0 (generatorはcsharp)
手順
1. openapi-cliの準備
今回はnpmでインストールしたものを使う
npm i -g openapi-generator-cli
2. specとconfigからコードを生成する
openapi-generator-cli generate -i <specのjsonかyml> -g csharp -o <出力先> -c <config (--additional-propertiesで設定しても良い)>
筆者はこんなscriptなりました
色々docとか不要なものも生成されるので、Temp以下に出力してから必要なフォルダのみをAssets/Plugins/以下に移動させてます。
openapi-generator-cli generate -i https://******.com/api-json -g csharp -o Temp/Api -c api-generate-config.json
mv Temp/Api/src/Client Assets/Plugins
rm -rf Temp/Api
- api-generate-config.json
{
"library": "restsharp",
"optionalAssemblyInfo": true,
"optionalProjectFile": false,
"packageName": "Client",
"targetFramework": "netstandard2.1",
"validatable": true
}
httpclientはいくつか選べますが、restsharpが良さそうです。
targetFrameworkはunityで使用しているバージョンを指定 (ProjectSettings->Player->OtherSettings->Configrationに記載があります)
設定できる項目については以下を参照
3. dllの追加
このままだと、依存するdllがいくつか足りないので、追加していく
※今回はnetstandard2.1用に必要なものを追加しています。
そのため、netstandard2.0や.Net framework**などでは追加のpackageがあるかもしれないです。
- Newronsoft Json
unityのpackage managerから追加できる
- RestSharp
NuGetで検索すると見つかる
ここのDownload packageからダウンロードしたものにdllが入っている
そのままだと回答できないので、.nupkgを.zipに書き換えて開く
中のlibの下にdllがあるので、unityのproj内にコピーする
- RestSharpの依存
- Polly関係
他にも必要なpackageあればNuGetなどから探してプロジェクトに追加してください
試用
private async Task Init()
{
var config = new Configuration();
config.BasePath = "https://****.com";
var api = new V0Api(config);
var res = await api.FindAllWithHttpInfoAsync();
Debug.Log(res.StatusCode); // OK
}
operationや、apiのcall方法もいくつか用意されていて便利そうでした。
Discussion