Appwrite Dart SDK 2.0 の発表


アプリライターの皆さん👋 応答モデルをサポートする Dart SDK のバージョン 2.0 を発表できることを非常に嬉しく思います. 🥳 10 月に、Flutter SDK でレスポンス モデルのサポートを開始し、pub.dev で利用可能な Dart SDK に同じ機能を拡張しました.

このリリースでは、Dart SDK の各サービスとメソッドは単純な JSON ではなく構造化された応答オブジェクトを返すため、各メソッドが返すものと応答に含まれるプロパティを正確に知ることができます.また、IDE での自動提案も改善されます.これにより、JSON オブジェクトの存在しないプロパティにアクセスしようとしたときに発生する可能性のあるバグを防ぐことができます.最後に、これは、独自の応答オブジェクトを作成する必要がなくなることを意味します!

🏁 始めましょう!



Appwrite Dart SDK を初めて使用する場合、Appwrite Flutter SDK とは異なり、この SDK は、Dart サーバー側コードから直接 Appwrite と統合するか、専用の Dart ランタイム環境を使用して Appwrite の Cloud Functions と統合するように設計されています.権限が昇格された API キーまたは認証用の JWT を使用し、管理者として Appwrite プロジェクトを管理できるようにします.

それでは、プロジェクトでこの SDK を使用する方法と、その外観について詳しく見ていきましょう.

最初に、Dart プロジェクトの pubspec.yaml に Appwrite の Dart SDK 依存関係を追加する必要があります.次の依存関係を追加します.

dependencies:
  dart_appwrite: 2.0.0


この依存関係を追加し、dart pub get を実行して更新された依存関係を取得すると、アプリケーションで使用できるようになります.

Note that this will result in a breaking change, as every call from Appwrite's Dart SDK to any service previously returned a Response object with data as JSON object received from server. However with this release, every endpoint will return structured response objects instead.



たとえば、database.createCollection()Collection オブジェクトを返し、database.listCollections()CollectionList オブジェクトを返します.他のすべてのサービスは、応答で同様のオブジェクトを返します. API 呼び出し中にエラーが発生した場合、SDK は以前と同様に AppwriteException オブジェクトをスローします. GitHub repository にアクセスすると、各サービス/メソッドが返す内容の詳細を確認できます.

以前は、SDK からのすべての呼び出しで、json データを含む Response オブジェクトが返されていました.ただし、この更新により、関連する応答オブジェクトが取得されます.そのため、独自のデータ クラスを作成して json を解析する必要がなくなります.各 SDK 呼び出しから何を期待するかを正確に知ることができます.たとえば、ID を使用してサーバーからコレクションを取得し、コレクションの名前を出力するコードが以前にあった場合、次のようになります.

Future<void> getCollection() async {
    try {
        final Map<String, dynamic> res = await database.getCollection(collectionId: '063dasee342ase');
        print(res.data['name']);
    } on AppwriteException(catch e) {
        print(e.message);
    }
}


これの問題は、JSON 応答で使用できるキーとその型が正確にわからないことです.自動補完や IDE からの提案もありません.ただし、今回の更新により、同じコードを次のように変更できます.

import 'package:appwrite/models.dart';

Future<void> getCollection() async {
  try {
        final Collection collection = await database.getCollection(collectionId: '063dasee342ase');
        print(collection.name);
    } on AppwriteException(catch e) {
        print(e.message);
    }  
}

Collection クラスの定義を見ると、何が期待できるかが正確にわかります.また、コレクションのプロパティにアクセスしようとしているときに、IDE がオート コンプリートを提案できるようになり、独自のデータ クラスを作成する必要がなくなりました.それは時間の節約ではありませんか?

注: データベース ドキュメント database.getDocument のエンドポイントは、データを独自のオブジェクトに変換するために使用できるメソッド Document を持つ convertTo オブジェクトを返します. document.list() メソッドも同様に機能します.

例えば:

database.getDocument(collectionId: "collectionId", documentId: "documentId").convertTo<Movie>(Movie.fromJson) //will return a Movie object

database.listDocuments(collectionId: "collectionId").convertTo<Movie>(Movie.fromJson) // will return a List<Movie> object


完全な例については、Playground For Dart をご覧ください.

問題や質問がある場合は、our discord までお気軽にお問い合わせください.

📚 もっと詳しく知る



次のリソースを使用して、詳細を確認し、ヘルプを得ることができます
  • 🚀 Getting Started Tutorial
  • 🚀 Appwrite Github
  • 📜 Appwrite Docs
  • 💬 Discord Community