Go HTTP クライアントから Atlas Go SDK への移行
このガイドを使用して、GoHTTP Go HTTPクライアント( go-client- MongoDBMongoDB -atlas )からAtlasGoMongoDB Atlas Go SDK( MongoDB /atlas-sdk-go )に移行します。
go-client-mongodb-atlas は非推奨となり、メジャーな機能のアップデートはありません。Atlas Go SDK への移行を強くお勧めします 最新の変更はこちら。両方のライブラリを同時に使用して部分的に移行することもできます。
バックグラウンド
AtlasGoSDK(MongoDB /atlas-sk-go )は、Atlas AdminAPI V に基づいています。2AtlasGoSDK は、バージョン管理されたAPI APIGoを メソッドとして公開することで、バージョン管理された の複雑さを簡素化します。SDK のメジャー リリースでは、Atlas Admin API エンドポイントのごく一部のサブセットに重大な変更が導入される可能性があります。
構造の変更
Atlas Go SDK は、非推奨の go-client-mongodb-atlas に 依存していません 。API リクエストの作成方法は変更されますが、エンドユーザーに必要な変更は最小限に抑えられます。
クライアント初期化
Atlas Go SDK には、クライアントの初期化のためのさまざまな方法があります。
// Surrounding code ignored for brevity sdk, err := admin.NewClient( // Authentication using ApiKey and ApiSecret admin.UseDigestAuth(apiKey, apiSecret))
注: 非推奨の go-client-mongodb-atlas と Atlas Go SDK は、ダイジェストベースの認証を使用します。同じ認証情報が適用されます。
詳しくは、「 Atlas Go SDK を使用したの認証 」を参照してください。
Error Handling
エラー処理では、開発者は API エラー オブジェクトにエラーをスローするための専用メソッドを使用する必要があります。
// Surrounding code omitted for brevity apiErr, _ := admin.AsError(err) log.Fatalf("Error when performing SDK request: %v", apiErr.GetDetail())
詳細については、「エラー処理 」を参照してください。
API インターフェイスの形式
Atlas Go SDK は、API を他のメソッドと区別するために API インターフェイスを変更します。
各 API メソッドには API サフィックスがあります。 例:
sdk.Projects
は、次のようになります sdk.ProjectsApi
各メソッドは、作成されるオブジェクトを説明するようになりました。 例:
sdk.Projects.create()
は になります sdk.ProjectsApi.createProject(...)
詳細については、 エンドポイントのドキュメント を参照してください。
SDK メソッドの異なる命名規則
モデル名とプロパティは、メソッドとフィールド名の明確性と予測しやすくするためにパスカルケース形式でフォーマットされます。 たとえば、 ClusterAWSProviderSettingsはClusterAwsProviderSettingsになります。
プロパティ名にも同じが適用されます。 たとえば、 ID
フィールドはId
などになります。
リクエスト ボディ オブジェクト作成時の複数の選択
Atlas Go SDK は、リクエスト オブジェクトと応答オブジェクトの明確性を向上させます。 エンドポイントが複数の形式のペイロード(多形)を受け入れる場合は、特定のリクエストに使用する API モデルのインスタンスを指定できます。 たとえば、クラスターを作成するときに、専用の regionConfigs オブジェクト(AWSRegionConfig、GCPRegionConfig など)の 1 つを使用できます。
// Surrounding code omitted for brevity RegionConfig{ // Dedicated region config for AWS cloud AWSRegionConfig: &mongodbatlas.AWSRegionConfig{ //AWS-specific fields are here RegionName: ®ionName, }, }