Modular Extend SDK API 呼び出し応答の処理
注釈:本資料はAI技術を用いて翻訳されています。
Overview
AccelByte Gaming Services (AGS) Modular Extend SDKを使用すると、そのエンドポイントを呼び出すことでAGSを拡張できます。このSDKは複数のプログラミング言語で利用可能です。
このガイドでは、Modular Extend SDKを使用してAGSエンドポイントを呼び出す際に、API応答オブジェクトを扱う方法について説明します。
Go
このセクションでは、Go用Modular Extend SDKのセットアップ手順について説明します。
前提条件
このSDKにはgo 1.18以降のバージョンが必要です。
SDKプロジェクトのインポート
SDKを使用するには、プロジェクトのgo.modファイルを更新します。次の記述を、
require (
github.com/AccelByte/accelbyte-go-sdk {VERSION}
)
次の記述に置き換えます。
require (
github.com/AccelByte/accelbyte-go-modular-sdk/{service}-sdk {VERSION}
)
必要なサービスのみをインポートしてください。その後、{VERSION}を希望するリリースバージョンに置き換えます。新しいプロジェクトを開始する場合は、最新のリリースバージョンを使用してください。
- その他の例については、GitHub上のSamplesフォルダを参照してください。
- 利用可能なGo Extend SDKモジュールの一覧については、Published Go Modulesを参照してください。
環境変数
ConfigRepositoryを使用する場合は、以下の環境変数を設定します。
| Name | Required | Example |
|---|---|---|
AB_BASE_URL | 必須 | https://test.accelbyte.io |
AB_CLIENT_ID | 必須 | abcdef0123456789abcdef0123456789 |
AB_CLIENT_SECRET | 機密のAB_CLIENT_IDを使用する場合は必須 | ab#c,d)ef(ab#c,d)ef(ab#c,d)ef(ab |
API呼び出し応答の処理
Modular Extend SDKの各操作は応答オブジェクトを返します。このオブジェクトを使用して、呼び出しが成功したかどうかを確認し、応答データまたはエラーオブジェクトを取得できます。
- 呼び出しが成功した場合、
response.IsSuccessはtrueになります。それ以外の場合はfalseになります。 response.Dataオブジェクトは、エンドポイントに応答があるかどうかによってオプションです。- 呼び出しが失敗した場合、
response.Error<status-code>にエラーオブジェクトが格納されます。それ以外の場合はnullになります。 response.Unpackは、エンドポイントから返されるすべての応答を返します。response.StatusCodeは、エンドポイントから返されるint型のステータスコード応答を返します。
既知のエラーは、各モジュールのerrors.go(例:<module-name>-sdk/pkg/<module-name>clientmodels/errors.go)にあります。
response, err := userProfileService.GetMyProfileInfoShort(input)
if response.Error400 != nil {
// Do something
} else {
ok := response.Data
// Do something
response.Unpack // Do something with the return value
}
Python
このセクションでは、Python用Modular Extend SDKのセットアップ手順について説明します。
前提条件
このSDKにはPython 3.9以降が必要です。
Pipでインストール
-
コアパッケージをインストールします。
pip install accelbyte-py-sdk-core -
必要なサービスをインストールします。
pip install accelbyte-py-sdk-service-achievement
pip install accelbyte-py-sdk-service-ams
pip install accelbyte-py-sdk-service-basic
pip install accelbyte-py-sdk-service-cloudsave
pip install accelbyte-py-sdk-service-dslogmanager
pip install accelbyte-py-sdk-service-dsmc
pip install accelbyte-py-sdk-service-gametelemetry
pip install accelbyte-py-sdk-service-gdpr
pip install accelbyte-py-sdk-service-iam
pip install accelbyte-py-sdk-service-leaderboard
pip install accelbyte-py-sdk-service-legal
pip install accelbyte-py-sdk-service-lobby
pip install accelbyte-py-sdk-service-match2
pip install accelbyte-py-sdk-service-matchmaking
pip install accelbyte-py-sdk-service-platform
pip install accelbyte-py-sdk-service-qosm
pip install accelbyte-py-sdk-service-reporting
pip install accelbyte-py-sdk-service-seasonpass
pip install accelbyte-py-sdk-service-session
pip install accelbyte-py-sdk-service-sessionbrowser
pip install accelbyte-py-sdk-service-social
pip install accelbyte-py-sdk-service-ugc -
必要に応じて、追加機能をインストールします。
pip install accelbyte-py-sdk-feat-auth
pip install accelbyte-py-sdk-feat-token-validationまたは、すべての機能をインストールします。
pip install accelbyte-py-sdk-all
環境変数
EnvironmentConfigRepository(デフォルト)を使用する場合は、以下の環境変数を設定します。
| Name | Required | Example |
|---|---|---|
AB_BASE_URL | 必須 | https://test.accelbyte.io |
AB_CLIENT_ID | 必須 | abcdef0123456789abcdef0123456789 |
AB_CLIENT_SECRET | プライベートなAB_CLIENT_IDを使用する場合は必須 | ab#c,d)ef(ab#c,d)ef(ab#c,d)ef(ab |
AB_NAMESPACE | 必須。SDKが{namespace}パスパラメータを自動的に設定します(上書き可能) | accelbyte |
AB_APP_NAME | 任意。SDKがUser-Agentヘッダーを自動的に設定します(上書き可能) | MyApp |
AB_APP_VERSION | 任意。SDKがUser-Agentヘッダーを自動的に設定します(上書き可能) | 1.0.0 |
API呼び出し応答の処理
すべての操作とそのラッパー関数は、各操作に固有のApiResponseのサブクラスのインスタンスを返すようになりました。
from accelbyte_py_sdk.api.iam import public_create_user_v3
def main():
# ラッパー関数'public_create_user_v3'は
# `PublicCreateUserV3`操作をラップしており、これは
# `ApiResponse`のサブクラスである`PublicCreateUserV3.Response`の
# インスタンスを返します。
#
# `PublicCreateUserV3.Response`クラスは、以前の構文を維持したまま
# `result, error`にアンパックできるように
# '__iter__'ダンダーメソッドも実装しています。
#
# class PublicCreateUserV3(Operation):
# class Response(ApiResponse):
# def __iter__(self):
# yield data
# yield error
response = public_create_user_v3(...)
result, error = response
if error:
exit(1)
if __name__ == "__main__":
main()
ApiResponseオブジェクトのok()メソッドを使用して、応答が失敗した場合にExceptionを発生させることもできます。
from accelbyte_py_sdk.api.iam import public_create_user_v3
def main():
response = public_create_user_v3(...).ok()
# or
# result, error = public_create_user_v3(...).ok()
if __name__ == "__main__":
main()
また、ApiResponseオブジェクトからのエラーを、サービス内の既知のエラーと比較することもできます。
from accelbyte_py_sdk.api.iam import public_create_user_v3
from accelbyte_py_sdk.api.iam.errors import ERROR_10153, ERROR_10154 # known errors for the IAM service
def main():
response = public_create_user_v3(...)
if response.error:
# エラーコードを取得
error_code = response.error.code
# エラーメッセージを取得
error_message = response.error.message
# コードに応じてエラーを処理
# - ERROR_10153 = ApiError(code="10153", message="user exist")
# - ERROR_10154 = ApiError(code="10154", message="country not found")
if response.error.code == ERROR_10153.code:
do_something()
elif response.error.code == ERROR_10154.code:
do_something_else()
# 例外を発生させる
raise response.error.to_exception()
if __name__ == "__main__":
main()
Java
このセクションでは、Java用Modular Extend SDKのセットアップ手順について説明します。
前提条件
このSDKはJDK 8とGradle 7.5を使用して開発されています。
Gradle設定
以下をgradle.buildファイルに追加します。{VERSION}は、先頭のv文字を除いたリリースのバージョンタグに置き換えます。
repositories {
mavenCentral()
}
dependencies {
...
implementation 'net.accelbyte.sdk:module-iam:{VERSION}'
}
module-iamは、AGSを使用するために必要な最小限の依存関係です。これはAGS IAMサービスをラップするSDKです。詳細については、GitHub上のSamplesフォルダを参照してください。
環境変数
DefaultConfigRepositoryを使用する場合は、以下の環境変数を設定します。
| Name | Required | Example |
|---|---|---|
AB_BASE_URL | 必須 | https://test.accelbyte.io |
AB_CLIENT_ID | 必須 | abcdef0123456789abcdef0123456789 |
AB_CLIENT_SECRET | 機密のAB_CLIENT_IDを使用する場合は必須。 | ab#c,d)ef(ab#c,d)ef(ab#c,d)ef(ab |
API呼び出し応答の処理
Java用Modular Extend SDKの各操作は応答オブジェクトを返します。このオブジェクトを使用して、呼び出しが成功したかどうかを確認し、応答データまたはエラーオブジェクトを取得できます。
- 呼び出しが成功した場合、
isSuccess()ゲッターメソッドはtrueになります。それ以外の場合はfalseになります。 getData()ゲッターメソッドには、サービスからの応答データが含まれます。このプロパティは、エンドポイントに応答があるかどうかによってオプションです。getError()ゲッターメソッドには、呼び出しが失敗した場合にエラーオブジェクトが含まれます。それ以外の場合はnullになります。
既知のエラーは、<ServiceName>Errors静的クラス(例:BasicErrors、IamErrorsなど)にあります。
UserProfile userProfile = new UserProfile(sdk);
GetMyProfileInfoOpResponse response = userProfile.getMyProfileInfo(new GetMyProfileInfo("accelbyte"));
if (response.isSuccess())
{
// 応答データを使って何らかの処理を行う
}
else
{
// 応答エラーオブジェクトを使って何らかの処理を行う
// エラーコードを取得
String errorCode = response.getError().getCode();
// エラーメッセージを取得
String errorMessage = response.getError().getMessage();
// または例外をスローする
response.getError().throwException();
// 既知のエラーと比較して、より具体的なエラーを処理する
if (response.getError().isEqualWith(BasicErrors.error11440))
{
// ユーザープロファイルが見つからない場合の処理
}
}
C#
このセクションでは、C#用Modular Extend SDKのセットアップ手順について説明します。
前提条件
このSDKには.NET 8.0 SDKが必要です。
必要なパッケージのインストール
# AccelByte C# Extend SDKを使用するには、必ず以下のパッケージを含めてください
$ dotnet add package AccelByte.Sdk.Abstractions
$ dotnet add package AccelByte.Sdk.Core
# AGSへの認証やトークン検証を行うには、このパッケージを含めます
$ dotnet add package AccelByte.Sdk.Authentication
# オプションの機能パッケージ
$ dotnet add package AccelByte.Sdk.Feature.AutoRefreshToken
$ dotnet add package AccelByte.Sdk.Feature.LocalTokenValidation
# APIパッケージ。必要に応じて1つ以上のパッケージを含めることができます。
$ dotnet add package AccelByte.Sdk.Api.<ApiName>
# 互換性レイヤー。モノリシックSDKバージョンとの互換性レイヤーを有効にするには、このパッケージを使用します。
$ dotnet add package AccelByte.Sdk.Api.Compat
APIパッケージの全リストはGitHubで確認できます。
環境変数
DefaultConfigRepositoryを使用する場合は、以下の環境変数を設定する必要があります。
| Name | Required | Example |
|---|---|---|
AB_BASE_URL | 必須 | https://test.accelbyte.io |
AB_CLIENT_ID | 必須 | abcdef0123456789abcdef0123456789 |
AB_CLIENT_SECRET | プライベートなAB_CLIENT_IDを使用する場合は必須 | ab#c,d)ef(ab#c,d)ef(ab#c,d)ef(ab |
AB_NAMESPACE | 必須 | accelbyte |
API呼び出し応答の処理
Modular Extend SDKの各操作は応答オブジェクトを返します。このオブジェクトを使用して、呼び出しが成功したかどうかを確認し、応答データまたはエラーオブジェクトを取得できます。
- 呼び出しが成功した場合、
IsSuccessプロパティはtrueになります。それ以外の場合はfalseになります。 Dataプロパティには、サービスからの応答データが含まれます。このプロパティは、エンドポイントに応答があるかどうかによってオプションです。Errorプロパティには、呼び出しが失敗した場合にエラーオブジェクトが含まれます。それ以外の場合はnullになります。
既知のエラーは、<ServiceName>Errors静的クラス(例:BasicErrors、IamErrorsなど)にあります。
var response = sdk.GetBasicApi().UserProfile.GetMyProfileInfoOp.Execute(sdk.Namespace);
if (response.IsSuccess)
{
// response.Dataを使って何らかの処理を行う
}
else
{
// response.Errorを使って何らかの処理を行う
// エラーコードを取得
string errorCode = response.Error.Code;
// エラーメッセージを取得
string errorMessage = response.Error.Message;
// または例外をスローする
response.Error.ThrowException();
// 既知のエラーと比較して、より具体的なエラーを処理する
if (response.Error == BasicErrors.Error11440)
{
// ユーザープロファイルが見つからない場合の処理
}
}
EnsureSuccess()メソッドを使用すると、応答オブジェクトに対するデフォルトのエラーおよびnullチェックの省略形として利用できます。このメソッドは、エンドポイントに応答がある場合、応答データを直接返します。
UserProfilePrivateInfo profileData = sdk.GetBasicApi().UserProfile.GetMyProfileInfoOp
.Execute(sdk.Namespace)
.EnsureSuccess();