キーテイクアウト
を使用して複数形を自分で指定しない場合
emberjsは仮定し、「式」を要求します。フレームワーク自体がそのようなことを提供するのは良いことですが、一方で、これらの詳細を忘れた場合、物事は制御不能になります。
エンバーでより深く冒険する前に、警告:エンバーは困難で強力です。時間をかけてそれがどのように機能するかを学びましょう{ "user": { "firstName": "firstName", "lastName": "lastName" } }
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
このフレームワークがどのようにデータを望んでいるかを確認するためにEmberから始めました。構造の構築方法を知っていれば簡単です。データベースからデータを検証と取得するのは簡単ですが、堅実な休憩インターフェイスとスマートなインターフェイスを構築することは難しい部分です。
何かを開発すると、モックアップが非常に役立ちます。あなたが第一人者であり、PhotoshopやGimpに対処するのが嫌いであっても、プロトタイプに適したツールがあります。私はBalsamiqを使用しましたが、私のフロントページのプロトタイプはこれでした:
それを構築し始めましょう。 Open /App/views/index.php。これは、シングルページアプリとして機能します。このシリーズの最初の部分でこのファイルを作成しました。
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
すべてのコードがスクリプトタグ内にあることに気付きましたか? Emberは、ハンドルバーをテンプレート言語として使用します。テキスト/Xハンドルバーのタイプは、特別なタイプのスクリプトです。 Emberとハンドルバーをしばらく使用している場合は、おそらくテンプレート名を使用しました。このテンプレートはすべてのアプリケーションのコンテナとして使用されるため、このテンプレートはそれらを指定しません。名前を指定しない場合、Emberはアプリケーションテンプレートとして使用します。
リソースコントローラー
この非常にシンプルなアプリを開発したとき、REST APIを開発するときにリソースコントローラーが役立つことがわかりました。それがRESTアーキテクチャのポイントです。すべてがリソースです。すべてのリソースには、http動詞を適用できます。すべての動詞が必要なわけではありませんこれは、Artisanを介してリソースコントローラーを作成する方法です。オプション-Exceptは、このコントローラーからこれら2つの方法を除外します。メソッドの作成と編集は必要ありません。作成メソッドは、そのリソースを作成するグラフィカルインターフェイスを扱います。 1ページのアプリを作成しているので、Emberの外にビューを作成するのは賢明ではありません。
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
別のコントローラーは画像コントローラーです。すでにそれを持っているのに、なぜ画像コントローラー?画像を提供するにはエンドポイントが必要だからです。 Dropboxは画像を保持していますが、外部からアクセスすることはできません。フォルダを公開したい場合は、支払う必要があります。それが最初の理由です。 2番目の理由は、すべてのイメージを公開したくないということです。一言で言えば、このコントローラーはDropboxから画像をつかみ、クライアントに提供します。
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
そして最後になりましたが、usercontroller:
ですEmber.Inflector.inflector.irregular('formula', 'formulae');
コントローラーができたので、それらのコントローラーを関連するルートにリンクする必要があります。 /app/routes.phpを更新しましょう。 まず、ルート::グループを使用してURLネームスペース内にそれらをグループ化します。
{ "user": { "id": 1, "name": "firstName", "lastname": "lastname, "photos": [1, 2, 3] }, "photos": [ { "id": 1, "title": "Lorem Ipsum" }, { "id": 2, "title": "Lorem Ipsum" } ] }
また、そのグループ内のフィルターを指定できます。たとえば、auth :: wonebasic( 'username')フィルターを追加するか、このグループに追加して追加できます。他の認証も使用できます。
<script type="text/x-handlebars"> <!-- The navigation top-bar --> <nav data-topbar> <ul > <li > <h1><a href="#">Photo Upload</a></h1> </li> </ul> <section > <!-- Left Nav Section --> <ul > <li > <a href="#">Categories</a> <ul > <li><a href="#">Category1</a></li> <li><a href="#">Category2</a></li> <li><a href="#">Category3</a></li> <li><a href="#">Category4</a></li> </ul> </li> </ul> </section> <div ></div> </nav><!-- END Navigation --> <!-- Content --> <div style="margin-top: 50px;"> <!-- The content will be here --> </div><!-- END Content --> </script>
そのグループ内に3つのコントローラーを追加します。 Photocontroller、usercontroller、およびcategorycontroller
そのグループの外にImagesControllerを追加します。このコントローラーには名前空間が必要だとは思いません。画像は画像であり、名前空間を与えることには意味がありません。
php artisan controller:make PhotoController --except=create,edit
php artisan controller:make CategoryController --only=show,index
php artisan controller:make ImagesController --only=show
インデックス()メソッドは、データベースから最新の写真を返す必要があります。ここでは、いくつかのページネーションを行うことができますが、私は物事が複雑になりすぎてほしくありません。コメントに十分な関心がある場合は、このアプリケーションを今後の記事で更新します。
これはデータベースから9枚の写真をつかみます。次に、すべての写真を撮って、後でJSON形式に変換されるフォーマットされた配列で表示します。
すべてがうまくいった場合、または例外が雄弁さによってスローされない場合、これは正しい出力を表示します。特定のステータスコードを表示する場合は、雄弁でスローできるすべての例外をキャッチし、適切なステータスコードを表示します。今すぐShow()メソッドを記入しましょう。繰り返しますが、特定のIDを使用して写真に関するすべての情報を取得したいと考えています。
php artisan controller:make UserController --only=show,index
独自のアプリを構築するときは、ユーザー入力に検証を追加することを忘れないでください。
usercontrollerのロジックはほぼ同じです。今回は、ユーザーモデルをリクエストします。
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
すべてがほぼ同じで、モデルとフィールドのみが変更されます。出力JSON。 showメソッドは次のようになります:
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
私たちが扱っている最後のコントローラーは、ImagesControllerです。ロジックは、ファイルシステムから画像をつかんでそれらを提供するのと同じくらい簡単です。ファイルを保存し、ローカルファイルシステムまたはサーバーファイルシステムで取得する場合は簡単です。残念ながら、ファイルをHerokuに保存することはできないため、Dropboxを使用して、このエンドポイントからそれらのファイルを提供します。
ドロップボックスクライアントとフライシステムアダプターをインポートします。私たちの環境がローカルの場合、ローカルアダプターを使用してフライシステムを使用します。環境が生産されている場合は、Dropboxアダプターを使用してください。フライシステムクラスをこのコントローラー内のプライベート変数に割り当てます。
showメソッドはそのファイルにサービスを提供し、Destroyメソッドはファイルシステムからそのファイルを削除します。このライブラリを使用することにより、私たちはアプリにレベルの抽象化を入れました。
Ember.Inflector.inflector.irregular('formula', 'formulae');
最終的には、ImageControllerは次のようになります:
{ "user": { "id": 1, "name": "firstName", "lastname": "lastname, "photos": [1, 2, 3] }, "photos": [ { "id": 1, "title": "Lorem Ipsum" }, { "id": 2, "title": "Lorem Ipsum" } ] }
提供した形式はHTMLです。わかりました、それは少し奇妙です。 HTMLではなく画像を提供したかったのです。ただし、ブラウザはファイル形式を探し、そのファイルの使用方法を認識しているため、それは問題ではありません。
<script type="text/x-handlebars"> <!-- The navigation top-bar --> <nav data-topbar> <ul > <li > <h1><a href="#">Photo Upload</a></h1> </li> </ul> <section > <!-- Left Nav Section --> <ul > <li > <a href="#">Categories</a> <ul > <li><a href="#">Category1</a></li> <li><a href="#">Category2</a></li> <li><a href="#">Category3</a></li> <li><a href="#">Category4</a></li> </ul> </li> </ul> </section> <div ></div> </nav><!-- END Navigation --> <!-- Content --> <div style="margin-top: 50px;"> <!-- The content will be here --> </div><!-- END Content --> </script>
APIのテスト
php artisan controller:make PhotoController --except=create,edit
私は認めなければなりません、私はphpstormに恋をしています、そして、残りのAPIをテストするために、私はRESTクライアントと呼ばれるツールを使用します。これは、テストを簡素化するグラフィカルインターフェイスです。必要に応じて、端末からカールを使用することもできます。いくつかのテストを行いましょう:
そしてこれが返されたものです:
php artisan controller:make CategoryController --only=show,index
削除や投稿など、他の動詞をテストすることもできます。先に進んで、できる限りテストしてください。テストに使用できる他のクライアントがあります。レストコンソールと郵便配達員はそのうちの2つです。 1つ目はChromeでのみ利用でき、2番目のChrome、PostmanはChromeとFirefoxの両方で利用できます。郵便配達員はよりシンプルでユーザーフレンドリーなようです。先に進んで、試してみてください。
Laravelは、リソースコントローラーを使用してREST APIを構築するための作業を簡素化します。 Emberコンベンションを使用して、インターフェイスをどのように構築するかを確認しました。 Emberは優れたインターフェイスを選択しており、そのロジックに固執することで、他のプラットフォームのコードを簡単に再利用できます。
この部分では、概念にもっと焦点を合わせており、あまりコーディングをしませんでした。すべてのメソッドを埋めて検証を追加すると、この投稿が既に長く、長いシリーズになったときに、この投稿を不必要に拡張しました。開発するときは、常に入力を検証する必要があります。それを忘れないでください、そしてテスト、テスト、テスト。テストはあなたの親友でなければなりません。このシリーズの最終記事では、完全に機能するライブアプリケーションにすべてをまとめます。
Laravelを使用した休憩リソースの構築に関するよくある質問 Laravelでリソースコントローラーを作成するにはどうすればよいですか? Laravel APIリソースを使用するには、最初にリソースクラスを作成する必要があります。これは、Artisan Command PHP Artisan Make:Resource Resourcenameを使用して実行できます。リソースクラスが作成されたら、リソースのToArrayメソッドの変換を定義できます。ルートからリソースを返すには、リソースクラスの新しいインスタンスを返すだけで、変換するデータを渡します。 🎜>リソースクラスのToArrayメソッドを変更することにより、Laravelリソースによって返されたデータをカスタマイズできます。 ToArrayメソッドは、雄弁なモデル属性をAPI応答属性にマッピングする場合です。必要に応じて属性を追加、削除、または変更できますLaravelのリソースとコレクションの違いは何ですか?Laravel Eloquentリソースの目的は何ですか? Eloquent ORMモデルとモデルコレクションはJSON形式になります。これは、APIを構築するときに特に役立ちます。これにより、API応答で送信するデータの正確な形状と形式を制御できます。データ出力を制御するための一貫した管理可能な方法を提供します。
laravel APIリソースを使用するにはどうすればよいですか?
以上がLaravelでRESTリソースを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。