>
鑰匙要點如果我們想檢索用戶列表,Ember會期望這樣的JSON:
第一個需要“用戶”,但是第二個需要“用戶”。第二個是複數。 Ember也為此規定了一些規則。如果您沒有通過以下方式自己指定複數
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
在與Ember更深入的風險之前,警告:Ember是困難而強大的。花點時間學習它的工作原理。
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
>
Ember.Inflector.inflector.irregular('formula', 'formulae');
>
>我從Ember開始,看看該框架如何想要數據。如果您知道如何構建結構,那就容易了。驗證和從數據庫中獲取數據很容易,但是建立一個可靠的REST接口和一個智能的界面,這是困難的部分。當您開發某些東西時,模型可能會非常有幫助。即使您是一名大師程序員,並且討厭處理Photoshop或GIMP,也有很好的原型工具。我使用了balsamiq,而我的頭版原型是:
>
讓我們開始構建它。 Open/App/views/index.php。這是我們的單頁應用程序。我們在本系列的第一部分中創建了此文件。
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
允許我解釋這一點。 NAV標籤負責導航。帶有類標題區域的UL標籤是文本,該文本用作徽標,該徽標鏈接到應用程序的第一個級別。我還添加了一個帶有類別列表的下拉菜單。如果您想了解更多信息,請前往基礎5個文檔。在大多數情況下,它只是複制/粘貼操作,所以不必擔心此部分。
>
您是否注意到我們所有的代碼都在腳本標籤中? Ember使用車把作為模板語言。文本/X Handlebars的類型是一種特殊的腳本類型。如果您使用了Ember和車把一段時間,則可能使用模板名稱。我沒有在此中指定它們,因為此模板將用作所有應用程序的容器。如果您沒有指定名稱,Ember將其用作應用程序模板。資源控制器
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
>
>為類別創建另一個資源控制器。如您所見,僅在此控制器中提供顯示和索引方法。我認為顯示單個類別並檢索所有類別就足夠了。>
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
>另一個控制器是圖像控制器。為什麼如果我們已經有一個圖像控制器?因為我們需要一個終點來提供圖像。 Dropbox擁有我們的圖像,但我們無法從外部訪問它們。如果您想公開文件夾,則必須付款。那是第一個原因。第二個原因是我不希望每個圖像都公開。簡而言之,該控制器將從Dropbox中獲取圖像並將其提供給客戶端。
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
,最後但並非最不重要的是usercontroller:
>Ember.Inflector.inflector.irregular('formula', 'formulae');
>現在我們擁有控制器,我們需要將這些控制器與其相關路線聯繫起來。讓我們更新 /app/routes.php。 首先,使用Route :: group。
{ "user": { "id": 1, "name": "firstName", "lastname": "lastname, "photos": [1, 2, 3] }, "photos": [ { "id": 1, "title": "Lorem Ipsum" }, { "id": 2, "title": "Lorem Ipsum" } ] }
>
<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>
>
>在該組內添加三個控制器。 PhotoController,UserController和categoryController。
php artisan controller:make PhotoController --except=create,edit
php artisan controller:make CategoryController --only=show,index
>
php artisan controller:make ImagesController --only=show
填充這些控制器
index()方法應返回數據庫中的最新照片。在這裡,我們可以做一些分頁,但我不希望事情變得太複雜。如果對評論有足夠的興趣,我們將在以後的文章中更新此應用程序。
>讓我解釋一下。我將所有內容插入了嘗試,捕捉並最終阻止。如果出現問題,請返回帶有狀態代碼的其他JSON。
php artisan controller:make UserController --only=show,index
>從數據庫中獲取9張照片。然後,拍攝每張照片,並以格式化的數組顯示,該數組將在以後轉換為JSON格式。
<span>Route<span>::</span>group(array('prefix' => 'api/v1'), function() </span> <span>{ </span> <span>});</span>
>讓我們立即填寫show()方法。同樣,我們想用給定的ID檢索有關照片的所有信息。
構建自己的應用程序時,請不要忘記將驗證添加到用戶輸入中。
usercontroller的邏輯幾乎相同。這次,我們將要求用戶模型。
{ "user": { "firstName": "firstName", "lastName": "lastName" } }
>一切幾乎相同,只有模型和字段改變。輸出JSON。表演方法看起來像這樣:
{ "users": [ { "firstName": "firstPersonsName", "lastName": "lastname" }, { "firstName": "secondPersonName", "lastName": "lastName" } ] }
此功能通過給定的ID檢索用戶。
我們要處理的最後一個控制器是ImagesController。邏輯就像從文件系統中獲取圖像並為其服務一樣簡單。當您保存文件並使用本地文件系統或服務器文件系統檢索時,這很簡單。不幸的是,您無法將文件保存到Heroku,因此您將使用Dropbox並從此端點提供這些文件。導入Dropbox客戶端和Flysystem適配器。如果我們的環境是本地的,那麼我們將與本地適配器一起使用Flysystem;如果環境正在生產,請使用Dropbox適配器。將Flysystem類分配給該控制器內部的私人變量。
Ember.Inflector.inflector.irregular('formula', 'formulae');
>
{ "user": { "id": 1, "name": "firstName", "lastname": "lastname, "photos": [1, 2, 3] }, "photos": [ { "id": 1, "title": "Lorem Ipsum" }, { "id": 2, "title": "Lorem Ipsum" } ] }
>
<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>
>
php artisan controller:make PhotoController --except=create,edit
繼續嘗試創建類別controller。我把它作為適合你的練習。
測試API
php artisan controller:make CategoryController --only=show,index
>
>,如果我想以更好的格式查看結果,我可以簡單地按JS圖標,而剩下的客戶端給我更好的表示。
>您還可以測試其他動詞,例如DELETE和POST。繼續進行測試。您還可以使用其他客戶進行測試:REST控制台和Postman是其中兩個。第一個僅在Chrome上可用,第二個Postman可在Chrome和Firefox上使用。郵遞員似乎更簡單,更友好。繼續嘗試。
在這一部分中,我更多地關注概念,並且沒有做太多的編碼。填寫所有方法並添加驗證將不必要地擴展此帖子,而該帖子已經足夠長,並且在一個長系列中。開發時,您應始終驗證輸入。不要忘記它,測試,測試,測試。測試應該是您最好的朋友。
在本系列的最後一期中,我們將將它們全部放在一個功能齊全的實時應用程序中。
常見問題有關用Laravel建立休息資源的問題
>如何在laravel中創建一個資源控制器?該命令是PHP Artisan Make:Controller Controllername -Resource。將“ ControlerName”替換為要給控制器的名稱。此命令將使用用於所有必要的CRUD操作的方法創建一個控制器。請記住,控制器的名稱應以單數形式,應該是有效的PHP類名稱。如何自定義Laravel資源返回的數據? 🎜>您可以通過修改資源類中的Toarlay方法來自定義Laravel資源返回的數據。 ToArray方法是將雄辯的模型屬性映射到API響應屬性的地方。您可以根據需要添加,刪除或更改屬性。
在Laravel中,資源類代表一個單個模型,需要將其轉換為JSON結構,而資源收集類代表集合資源。資源集合用於將模型或集合轉換為JSON。 Artisan Command Php Artisan Make:Resource ResourceCenameCollection-收集。這將創建一個資源集合類,您可以在其中定義集合的轉換。
我可以將元數據添加到Laravel中的資源響應中嗎?是的,你可以將元數據添加到Laravel中的資源響應中。這可以通過定義資源上的方法來完成。使用方法應返回要在響應中包含的元數據數組。
以上是使用Laravel建立休息資源的詳細內容。更多資訊請關注PHP中文網其他相關文章!