Quickstarters
Feature Overview
How to Build a Backend for Symfony?
26 分
はじめに このチュートリアルでは、 symfonyのバックエンドを構築する方法 を学びます。 back4appの強力な機能(データベース管理、cloud code、rest、graphql apiを含む)を使用して、symfonyアプリケーションとスムーズに連携する安全でスケーラブル、効率的なバックエンドを作成する方法をお見せします。 ユーザー認証、ファイルストレージ、リアルタイム更新をlive queriesを通じて処理する方法も発見できます(アーキテクチャに応じて)。 back4appの迅速なセットアップと直感的なプラットフォームを活用することで、サーバーやデータベースを手動で扱うよりも時間と労力を節約できます。 高度なセキュリティ、cloud jobsを使用したタスクのスケジューリング、webhookの設定、信頼性の高いバックエンド開発に必要なその他の機能に関する実践的な経験を得ることができます。 このチュートリアルを完了すると、自信を持ってsymfonyバックエンドを本番環境に拡張またはカスタマイズし、外部apiを統合し、必要に応じて複雑なビジネスロジックを追加できます。 前提条件 back4appアカウント 無料でサインアップ こちら https //www back4app com 新しいback4appプロジェクト back4appの始め方 https //www back4app com/docs/get started/new parse app symfony特有のセットアップ ローカルに symfony https //symfony com/download がインストールされていることを確認してください。phpとcomposerが準備されていることを確認してください。 symfonyの基本知識 コントローラー、サービス、テンプレートに慣れていることが望ましいです。 symfony公式ドキュメント https //symfony com/doc/current/index html node js(オプション、一部のビルドツール用) フロントエンドタスクにnodeベースのツールを使用する予定がある場合は、 node js https //nodejs org/en/download/ をインストールしてください。 symfony環境とback4appプロジェクトが設定されていることを確認してから始めてください。これにより、手順をスムーズに進めることができます。 ステップ1 – back4appで新しいプロジェクトを作成し、接続する back4appプロジェクトを作成する back4appアカウントにログインします。 ダッシュボードの「新しいアプリ」をクリックします。 名前を付けます(例:「symfony backend tutorial」)。 作成すると、back4appダッシュボードに表示されます。このプロジェクトはあなたのバックエンドの基盤です。 restまたはgraphqlで接続する アプリの「アプリ設定」または「セキュリティとキー」で、 アプリケーションid と rest apiキー (graphqlを使用する予定がある場合はgraphqlエンドポイントも)を見つけます。 あなたの parse server url (例: https //parseapi back4app com )をメモします。 symfonyにはネイティブのparse sdkがないため、symfonyのhttpクライアントやguzzleのようなライブラリを使用して、back4appのrestまたはgraphql apiと通信します。 以下は、 symfony httpclient https //symfony com/doc/current/http client html を使用した例です。 // src/service/back4appclient php namespace app\service; use symfony\component\httpclient\httpclient; class back4appclient { private $appid; private $restkey; private $baseurl; public function construct(string $appid, string $restkey, string $baseurl) { $this >appid = $appid; $this >restkey = $restkey; $this >baseurl = $baseurl; } public function createobject(string $classname, array $data) { $client = httpclient create(); $response = $client >request('post', $this >baseurl '/classes/' $classname, \[ 'headers' => \[ 'x parse application id' => $this >appid, 'x parse rest api key' => $this >restkey, 'content type' => 'application/json' ], 'json' => $data, ]); return $response >toarray(); } } このサービスは、symfony内からback4appバックエンドにリクエストを送信するのに役立ちます。 ステップ2 – データベースの設定 データモデルの作成 back4appでは、データを保存するクラス(テーブル)を定義します。タスクを保持するための todo クラスが必要だとしましょう データベースに移動 あなたのback4appダッシュボードで。 新しいクラスを作成 “todo” とし、次のようなフィールドを追加します タイトル (string) と iscompleted (boolean)。 または、 back4app aiエージェント にデータモデルを作成させます aiエージェントを開く あなたのプロジェクトダッシュボードで。 データモデルを説明する (例 “タイトルとiscompletedフィールドを持つtodoクラスを作成します。”)。 スキーマを自動生成する 。 restを使用したデータの読み取りと書き込み 新しい todo をsymfonyコントローラーから作成するには、次のようにします use app\service\back4appclient; use symfony\bundle\frameworkbundle\controller\abstractcontroller; use symfony\component\routing\annotation\route; class todocontroller extends abstractcontroller { \#\[route('/todo/new', name 'new todo')] public function new(back4appclient $client) { $data = \[ 'title' => 'buy groceries', 'iscompleted' => false ]; $result = $client >createobject('todo', $data); return $this >json($result); } } クエリには、 getリクエスト を使用し、あなたの資格情報を含めます curl x get \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ https //parseapi back4app com/classes/todo graphqlを使用したデータの読み取りと書き込み symfonyで graphql を統合することもできます。 todo を作成するための例のミューテーションは次のとおりです mutation { createtodo(input { fields { title "clean the kitchen" iscompleted false } }) { todo { objectid title iscompleted } } } ライブクエリの操作(オプション) symfonyアプリがリアルタイムデータを必要とする場合、 ライブクエリ をよりフロントエンドまたはリアルタイムマイクロサービスのコンテキストで組み込むことができます。 back4appの サーバー設定 でライブクエリを構成し、websocketクライアントを接続します。 symfonyは、必要に応じてこれらの更新に応答したり、別のリアルタイムレイヤーを介してブロードキャストしたりできます。 ステップ3 – aclとclpを使用したセキュリティの適用 acl(アクセス制御リスト) aclを使用すると、オブジェクトの読み取りまたは書き込みを誰が行えるかを制御できます。たとえば、rest apiを使用してデータを作成する際に、jsonに acl フィールドを追加することで、コード内でaclを適用できます。例えば { "title" "private task", "iscompleted" false, " acl" { "userobjectidhere" { "read" true, "write" true } } } clp(クラスレベルの権限) クラスレベルの権限 を使用すると、クラス全体に対して広範なアクセスルールを設定できます back4appダッシュボードで データベースを開く 。 クラスを選択する (例:「todo」)。 権限タブに移動する そして、読み取り/書き込みアクセスを構成します。 詳細情報については、 アプリセキュリティガイドライン https //www back4app com/docs/security/parse security をご覧ください。 ステップ 4 – クラウドコード関数の作成 クラウドコードを使用すると、インフラストラクチャを管理することなく、安全なサーバーサイドjavascriptを実行できます。symfonyはphpで動作しますが、特定のタスクを クラウドコード にオフロードして、back4appで高度なロジック、トリガー、および検証を行うことができます。 例 保存前にtodoを検証する // main js parse cloud beforesave('todo', (request) => { const todo = request object; if (!todo get('title')) { throw new error('todo must have a title'); } }); デプロイメント back4app cliを使用する またはダッシュボードを使用して main js をデプロイします。 クラウド関数を呼び出す symfonyサービスからrestまたはgraphql経由で。 ステップ 5 – 認証の設定 back4appのユーザー管理は、 parse user クラスに依存しています。symfonyを使用すると、restまたはgraphql呼び出しを介してユーザーのサインアップ、ログイン、およびパスワードリセットを処理できます。 サインアップ / ログイン via rest \# sign up curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"username" "alex", "password" "symfony123", "email" "alex\@example com"}' \\ https //parseapi back4app com/users \# log in curl x get \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ \ data urlencode 'username=alex' \\ \ data urlencode 'password=symfony123' \\ https //parseapi back4app com/login プログラム的なユーザーフローが必要な場合は、symfonyサービスを使用してこれらの呼び出しをラップしてください。 ソーシャルログイン googleまたはappleのサインインを統合する予定がある場合は、 back4appのソーシャルログインドキュメント https //www back4app com/docs/platform/sign in with apple を参照してください。oauthアプリを設定し、認証を完了するために特定のrest呼び出しを行います。 ステップ6 – ファイルストレージの処理 restによるファイルアップロード curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type image/png" \\ \ data binary '@localimage png' \\ https //parseapi back4app com/files/localimage png アップロード後、ファイルurlが取得できます。そのリンクを任意のクラス(例: todo )に保存して、そのファイルへの参照とすることができます。 ステップ7 – メール確認とパスワードリセット メールの設定 メール設定に移動 in back4app メール確認 とパスワードリセットテンプレートを有効にします。 カスタマイズ 必要に応じて「from」と「subject」行を設定します。 これにより、すべてのサインアップに有効なメール確認が必要になります。 ステップ8 – クラウドジョブによるタスクのスケジューリング クラウドジョブの例 // main js parse cloud job('cleanupoldtodos', async () => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; query lessthan('createdat', new date(now thirty days)); const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; }); この cleanupoldtodos ジョブをback4appダッシュボードで毎日実行するようにスケジュールし、データ管理を改善します。 ステップ9 – webhookの統合 webhookは back4appが外部サービスにhttpリクエストを送信できるようにします。たとえば、新しい todo が作成されるたびにslackエンドポイントにpingを送信できます more > webhooksに移動 in your back4app dashboard webhookを追加 外部エンドポイントを指定します。 オブジェクト作成時にイベントをトリガー todo クラスで。 ステップ10 – back4app管理パネルの探索 「 back4app admin app 」を使用して、ユーザーフレンドリーなデータ管理インターフェースを利用します 管理アプリを有効にする は アプリダッシュボード > その他 > 管理アプリ から行います。 安全なユーザー名とパスワードで 管理ユーザーを作成します。 カスタムサブドメインを割り当てる ことで簡単にアクセスできます。 この機能は、非技術的なチームメンバーがコードに深入りすることなく、レコードを表示および管理するのに役立ちます。 結論 あなたは back4appを使用してsymfonyのバックエンドを構築する方法 を学びました。これには次のことが含まれます 新しいプロジェクトを作成する back4appを基盤として。 データベースを構成する クラス、フィールド、リレーションシップを使用して。 データを保護する aclとclpを使用して。 cloud codeを活用する サーバーサイドのロジックのために。 ユーザー認証を管理する (サインアップ、ログイン、パスワードリセット)。 ファイルストレージを処理する rest apiを使用して。 cloud jobsを設定する 定期的なタスクのために。 webhookを統合する 外部サービスを接続するために。 back4app管理パネルをナビゲートする 簡単なデータ管理のために。 これらのステップは、symfonyアプリケーションを構築し、スケールするための強力なフレームワークを提供します。このアーキテクチャを拡張して、より複雑なロジックを処理したり、決済ゲートウェイを統合したり、高度なセキュリティ機能を追加したりしてください。back4appを使用することで、ホスティングやインフラストラクチャにかかる時間と労力を節約できるため、最高のユーザーエクスペリエンスを提供することに集中できます。 次のステップ 生産準備が整ったsymfonyアプリを構築する より高いトラフィックと高度なパフォーマンスニーズに合わせてback4appバックエンドをカスタマイズすることによって。 高度な機能を統合する ロールベースのアクセス、分析、または決済用のサードパーティapiなど。 公式のback4appドキュメントを探る セキュリティ、ログ、監視に関する深い洞察のために。 さらに多くのチュートリアルをチェックする このバックエンドをリアルタイムサービスと組み合わせたり、ライブ更新を伴う動的ウェブサイトを作成したりするために。 これらの戦略に従うことで、あなたのsymfonyプロジェクトは強力で効率的なバックエンドを得ることができます。back4appを活用してメンテナンスを容易にし、アプリケーションの機能を迅速に進化させましょう。次のsymfonyの傑作を構築する際の幸運を祈ります!