Quickstarters
Feature Overview
How to Build a Backend for Dart?
24 分
はじめに このチュートリアルでは、 dartのバックエンドを構築する方法 を学びます。 私たちは、データベース管理、cloud code functions、restおよびgraphql api、ユーザー認証、リアルタイムクエリ(ライブクエリ)など、back4appの重要な機能をdartベースのプロジェクトに統合することに焦点を当てます。 dartは多用途なプログラミング言語であるため、シンプルなウェブサーバーからフルスケールのアプリケーションまで、さまざまなバックエンドプロジェクトに使用できます。 back4appの直感的な環境を活用することで、重いサーバーメンテナンスなしで、迅速に堅牢で安全なバックエンドフレームワークをセットアップできます。 acl、clp、バックグラウンドタスクのスケジューリング、cloud codeを使用したカスタムロジックの作成などの機能が、サーバーサイドの操作をどのように効率化するかを確認します。 このチュートリアルを完了した後、dartバックエンドをスケールアップしたり、より高度な統合を追加したりする準備が整います。 前提条件 このチュートリアルを完了するには、次のものが必要です back4appアカウントと新しいback4appプロジェクト back4appの始め方。 https //www back4app com/docs/get started/new parse app アカウントをお持ちでない場合は、無料で作成できます。 基本的なdart開発環境 dart sdkとお好みのエディタをインストールすることで設定できます。詳細については、 dart sdkの取得。 https //dart dev/get dart dart 2 0以上 環境が最新であることを確認し、最近のdart機能やパッケージシェルフ、その他のサーバーサイドライブラリを活用できるようにします。 dartとバックエンドの概念に対する理解 dartが初めての場合は、 dart公式ドキュメント。 https //dart dev/guides を確認して基本的な流暢さを身につけてください。 始める前に、これらの前提条件がすべて整っていることを確認してください。back4appプロジェクトが準備され、ローカルdart環境が適切に構成されていると、より簡単に進めることができます。 ステップ1 – back4appで新しいプロジェクトを作成し、接続する なぜ新しいback4appプロジェクトを作成するのか? 新しいback4appプロジェクトは、データベース、セキュリティ、api、ファイルストレージなどを管理するバックエンドの基盤を形成します。dartベースのサーバーサイドロジックを構築するための整理された構造を提供します。 back4appプロジェクトの作成 back4appアカウントにログインします。 back4appダッシュボードで「 新しいアプリ 」をクリックします。 アプリに説明的な名前を付けます(例:「dart backend tutorial」)。 作成されると、プロジェクトはback4appダッシュボードに表示されます。このプロジェクトは、dartアプリケーションのすべてのバックエンド設定を構成する場所です。 parse sdkをインストールして接続する dartには公式のparse sdkはありませんが、back4app統合を可能にするコミュニティが維持するライブラリがあります。例えば、 parse server sdk をdartプロジェクトの次の依存関係に追加することで使用できます。 pubspec yaml dependencies parse server sdk ^4 0 0 # example version 次に実行します dart pub get parseを初期化 します。dartコード内で(例: main dart ファイルで) import 'package\ parse server sdk/parse server sdk dart'; future\<void> main() async { const keyapplicationid = 'your application id'; const keyclientkey = 'your javascript key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize( keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true, ); // your dart server logic goes here print('parse initialized with back4app!'); } back4appダッシュボードから、あなたの アプリケーションid , javascriptキー , および parseサーバーurl を取得します(「アプリ設定」>「セキュリティとキー」の下)。このステップにより、あなたのdartアプリケーションはback4appバックエンドフレームワークと安全に対話できます。 ステップ2 – データベースの設定 データモデルの作成 back4appダッシュボードで、「データベース」セクションに移動し、新しいクラス(例:「todo」)を作成します。 title (string)や iscompleted (boolean)などのフィールド用の列を追加します。 aiエージェントを使用したデータモデルの作成 アプリダッシュボードでaiエージェントを開きます。 希望するスキーマを説明します(例:「タイトルとiscompletedフィールドを持つtodoクラスを作成してください。」)。 aiエージェントにスキーマを最終決定させます。 sdkを使用したデータの読み取りと書き込み parse server sdkライブラリを使用すると、dartコードからデータを保存およびクエリできます。例えば import 'package\ parse server sdk/parse server sdk dart'; future\<parseobject?> createtodoitem(string title, bool iscompleted) async { final todo = parseobject('todo') set('title', title) set('iscompleted', iscompleted); final response = await todo save(); if (response success && response result != null) { print('todo created ${response result}'); return response result as parseobject; } else { print('error creating todo ${response error? message}'); return null; } } future\<list\<parseobject>?> fetchtodos() async { final query = querybuilder\<parseobject>(parseobject('todo')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { print('error fetching todos ${response error? message}'); return null; } } rest apiを使用したデータの読み取りと書き込み curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo graphql apiを使用したデータの読み取りと書き込み mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } ライブクエリを使用する(オプション) リアルタイムの更新を有効にするには、back4appダッシュボード(サーバー設定)でライブクエリをオンにします。その後、dartから購読できますが、特別なライブラリが必要な場合があります。parse server sdkライブラリは部分的なライブクエリサポートを持っているかもしれません。詳細についてはそのドキュメントを確認してください。 ステップ3 – aclとclpを使用したセキュリティの適用 概要 acl(アクセス制御リスト) オブジェクトレベルでの読み取り/書き込みを制限します。 clp(クラスレベルの権限) クラスレベルでの読み取り/書き込みを制限します。 ステップバイステップ クラスレベルの権限 back4appダッシュボードで、データベースセクションを開き、クラスを選択し、「セキュリティ」の下でclpを設定します。 コード内のacl (parse server sdkを使用) future\<parseobject?> createprivatetodo(string title, parseuser owneruser) async { final todo = parseobject('todo') set('title', title); final acl = \<string, dynamic>{}; // grant read/write to the owner acl\[owneruser objectid!] = {"read" true, "write" true}; // disable public read/write acl\[' '] = {"read" false, "write" false}; todo setacl(acl); final response = await todo save(); if (response success && response result != null) { return response result as parseobject; } else { print('error setting acl ${response error? message}'); return null; } } ステップ4 – クラウドコード関数の作成 なぜクラウドコードが必要か クラウドコードは、サーバー側でカスタムビジネスロジックを作成するために不可欠です。自分自身のインフラを管理する必要がなく、コードを安全かつスケーラブルに保つことができます。 例の関数とトリガー あなたの main js (クラウドコード用) // main js parse cloud define('hellodart', (request) => { return `hello from dart and back4app, ${request params name || 'guest'}!`; }); parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw 'each todo needs a title!'; } }); デプロイメント back4app cliを使用する ダッシュボードを使用する 「 cloud code > functions 」に移動します。 コードを「 main js 」に貼り付けます。 「 デプロイ 」をクリックします。 npmとcloud code cloud codeに追加のnpmモジュールが必要な場合は、プロジェクトの「 package json 」に指定してください。これにより、外部apiや高度な操作をサーバーサイドコードから直接統合できます。 ステップ5 – 認証の設定 ユーザー認証を有効にする back4appダッシュボードで、メール確認を有効にしたり、ソーシャルログインを設定できます。デフォルトでは、parse userクラスはパスワードを安全に保存します。 コードサンプル (dartのparse server sdkを使用) import 'package\ parse server sdk/parse server sdk dart'; future\<void> signupuser(string username, string password, string email) async { final user = parseuser(username, password, email); final response = await user signup(); if (response success) { print('user signed up ${response result}'); } else { print('error ${response error? message}'); } } future\<void> loginuser(string username, string password) async { final user = parseuser(username, password, null); final response = await user login(); if (response success) { print('user logged in ${response result}'); } else { print('error ${response error? message}'); } } ソーシャルログイン バック4アプリダッシュボード内で、 google、apple、またはfacebook のようなプロバイダーを設定します。 該当するparse server sdkプラグインまたは利用可能なカスタムoauthフローを実装します。 ステップ6 – ファイルストレージの取り扱い ファイルストレージの設定 バック4アプリは、parse apiを介してアップロードしたファイルを自動的にホストします。画像、文書、または任意のファイルタイプを保存できます。 例 (dart) セキュリティの考慮事項 バック4アプリダッシュボードでclpやユーザーロールを調整することで、誰がファイルをアップロードまたは取得できるかを制御できます。 ステップ 7 – メール確認とパスワードリセット 概要 メール確認は、ユーザーが登録したメールを所有していることを確認し、パスワードリセットリンクは、失われた資格情報を管理するための安全な方法を提供します。 back4app ダッシュボードの設定 次に進む アプリ設定 > メール 「 ユーザーのメールを確認 」と「 パスワードリセット 」を有効にします。 必要に応じてメールテンプレートをカスタマイズします。 実装 ユーザーが有効なメールを使用してサインアップすると、メール確認リンクが送信されます。パスワードリセットの場合は、parseuserのrequestpasswordresetメソッド(parse server sdkで利用可能な場合)またはrestエンドポイントを呼び出します。 ステップ 8 – クラウドジョブによるタスクのスケジューリング クラウドジョブの機能 クラウドジョブを使用すると、古いレコードのクリーンアップや定期的なレポートの送信など、設定した間隔でタスクをスケジュールできます。これらはバックグラウンドで動作し、ユーザーのトリガーアクションとは独立しています。 例 「 main js 」に追加します parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); スケジューリング に移動します アプリ設定 > サーバー設定 > バックグラウンドジョブ スケジュール cleanupoldtodos を毎日または選択した間隔で実行します。 ステップ 9 – ウェブフックの統合 定義 ウェブフックを使用すると、back4app アプリが特定のイベントで外部サービスに http リクエストを送信できます。これは、slack や stripe などのサードパーティサービスとの統合に役立ちます。 設定 に移動します その他 > ウェブフック あなたの back4app ダッシュボードで。 クリック ウェブフックを追加 そしてエンドポイントを提供します (例 https //your external service com/webhook endpoint )。 トリガーイベントを指定します (例 todo が作成された後)。 例 slack webhook urlを持っている場合、新しいtodoが挿入されるたびに通知を受け取るように設定できます。このdartバックエンドと外部ツールとのシームレスな接続は、自動化を促進します。 ステップ10 – back4app管理パネルの探索 見つける場所 back4appコンソールで、 more > admin app を開いてパネルを有効にします。 機能 データベースレコードを簡単に管理します。 ログ、バックグラウンドジョブ、分析をレビューします。 ユーザーアクセスと役割を制御します。 結論 これらの手順に従うことで、あなたは dartのための安全なバックエンドを構築しました back4app上で。 データベースを管理しました parseクラスとフィールドを通じて。 サーバーサイドロジックを処理するためのカスタムcloud codeを作成しました 。 acl、clp、およびユーザー認証を使用してデータを保護しました 。 cloud jobsを使用してバックグラウンドタスクをスケジュールしました 。 webhookを使用して外部サービスを統合しました 。 データ管理を容易にするために管理パネルを探索しました 。 この堅固な基盤は、フルスケールのウェブサーバー、マイクロサービス、または特化したアプリケーションを構築しているかどうかにかかわらず、dartプロジェクトを効率的に展開する準備を整えます。ここから、バックエンドフレームワークをスケールアップしたり、より複雑なロジックを追加したり、プッシュ通知や高度な分析などの高度な機能を統合したりできます。 次のステップ 生産準備状況を探る キャッシング戦略を使用し、同時実行を処理し、高トラフィック向けにパフォーマンスを最適化します。 高度な機能を統合する ロールベースのアクセス制御、より多くのソーシャルログイン、またはリアルタイムコラボレーションツールなど。 公式のback4appドキュメントをチェックする ログ、セキュリティ、パフォーマンスチューニングについての深い洞察を得るために。 実験する パッケージshelfのような追加パッケージを使用して、parseベースのデータレイヤーとともにカスタムウェブサーバーを作成し、dartの柔軟なプログラミング言語としての能力を活用します。 dartのバックエンドを構築する方法についてのこの知識を持っていることで、データを処理し、サーバーサイドプロセスを保護し、アプリのワークフローを自動化するための強力な方法を持っています—すべて大規模なインフラストラクチャのオーバーヘッドなしで。