摘要:對于某些應用程序,可能需要第三方服務或者來提取某些數據,將該數據轉換為所需的響應,并將其傳送到客戶端界面。使用中間件來處理響應數據可以確保數據庫的一致性。
對于某些應用程序,可能需要第三方服務或者 API 來提取某些數據,將該數據轉換為所需的響應,并將其傳送到客戶端界面。
為此,我們需要找到一種方法,方便從控制器發送到視圖或最終用戶界面的數據保持一致性。
因此,可能需要構建一個代表應用程序中所需資源的新對象或類。
您或許可能會想『為什么我需要它?』,因為,您不希望在應用程序中公開所有的 API 響應數據,此外,你可能需要轉換該響應的某些字段等。
在本文中,我將向您展示一種簡單的方法,將來自第三方 API 傳入的數據轉換為應用程序中的資源,以幫您保持一致性。
在進一步討論之前:在這篇文章中,我假設您至少已經基本了解了什么是 API 以及該如何使用 API ,如何使用 Laravel 框架及其某些組件作為 Eloquent ORM 。 如果你不知道上面的文章大概在說明寫什么,你可能會發現一些挑戰性的概念,但是,嘿,不要氣餒,我相信你會發現這篇文章會給你帶來一定的價值。一些關于 "Laravel resources" 的消息
"API Resources" 在 Laravel 5.5 中引入,作為是“將您的模型和模型集合表達并輕松轉換為 JSON 數據格式”的一種方式。
雖然這是官方的說明,并且您發現此部分在官方網站的 Eloquent 文檔上沒有此目錄索引,但您必須知道這些資源并未嚴格附加到 Eloquent ORM 當中。
在最基本的意義上來說,Eloquent 允許您將給指定對象轉換為不同的對象。
$this->id, "name" => $this->name, "email" => $this->email, "created_at" => $this->created_at, "updated_at" => $this->updated_at, ]; } }
您可以通過閱讀官方文檔了解有關 Resources 的所有信息:Eloquent: API Resources
使用第三方 API在使用第三方 API 時,您需要找到一種方法將傳入的響應數據轉換為結構一致的數據。
有關 Laravel 的最新消息:不久前 Eric L. Barnes 發表了一篇文章,描述了他如何使用 Laravel 為 laravel-news 網站建立一個前端頁面,然后用 WordPress 作為后端并從 WordPress API 讀取數據。你可以點擊這里查看所有文章。?https://laravel-news.com/word...
因此,以具體案例為例。 假設您的應用程序中有一個 WordPress 存儲庫,它從 WordPress API 中提取數據。
apiClient->get( "post", $query = ["id" => $id] ); // return as array return json_decode($response, true); } }
假設您從 WordPress API 接收此對象(數據)
// wordpress version 0.1 { ID: 123 post_title: "some title" post_content: "some content", post_author: "joe", publish_date: "01-01-2001" }
您可以將此響應包裝到一個數組中,然后在所有控制器或視圖上使用此數據。
響應格式一致性不妨想一想,如果 WordPress 的 API 更新了怎么辦。假如新版本會返回一個不同格式的數據。
// wordpress version 0.1 { post_id: 123 title: "some title" content: "some content", author: "joe", date: "01-01-2001" }
那么你就需要在項目的多個位置把 $post["post_title"] 替換成 $post["title"] 。
使用中間件來處理響應數據可以確保數據庫的一致性。當響應的格式增加時,你只需要更新某段代碼即可。
使用 API 資源批量處理數據正如我之前提到的,你可以使用沒有Eloquent的 「Resources」,下面就是一個很好的例子。
您需要做的第一件事是創建一個新的「Post」資源; 使用 artisan:
$ php artisan make:resource Post
$this->resource["title"], "content" => $this->resource["content"], "slug" => $this->resource["slug"] ]; } }返回單個資源實例
現在可以參照相同的例子,在你的 API 容器類中,你可以創建一個此資源新的實例,然后使用 resolve() 方法來返回轉換后的對象(這將返回一個數組)。
apiClient->get( "post", $query = ["id" => $id] ); $data = json_decode($response, true); return Post::make($data)->resolve(); } }返回數據集合
我們可以創建一個專用的資源類 「PostCollection」。
$ php artisan make:resource PostCollection
$this->collection ->map ->toArray($request) ->all(), "links" => [ "self" => "link-value", ], ]; } }
在上面的例子中,data 將會包含一個 Posts 數組,該數組的結構跟你在 Post 資源中定義的一樣。
你可以在這里了解更多關于 「resource collections」 的信息。
API 資源
總結!因此,如果你仔細研究 「resources」 的定義。你可以將其視為中間件,用于將已有數據轉為新的、不同格式的對象或數組。
更多翻譯文章請見 PHP / Laravel 開發者社區 https://laravel-china.org/top...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30025.html
摘要:本節將學習是如何利用形成一套完整的前端工作流模式的。你也可以使用下面命令來強制安裝所有模塊,不管該模塊之前是否安裝過由于國內墻的原因,使用安裝會非常緩慢,慢到想切,不過還好,我們可以使用淘寶提供的國內鏡像進行下載。 本節將學習 Laravel 是如何利用 Sass, NPM, Gulp形成一套完整的前端工作流模式的。 一、句法強大的樣式表Sass Sass 是一種可用于編寫CSS的語言...
摘要:之前的版本用的管理全段資源,版本開始使用的來管理。不過,并不是強制要求在開發期間使用它。發布問題標題標題編輯器容器內容發布問題實例化編輯器設置如果沒有預加載,否則不會出現 Laravel5.4 之前的版本用 gulp 的 laravel-elixir管理全段資源,Laravel5.4 版本開始使用webpack 的 Laravel Mix 來管理。 一、簡介 Laravel Mix 提...
摘要:使用能優雅的構建并且與單頁面應用程序完美結合。我們將重點關注所需的所有部分,然后在后續教程中,我們將進一步演示如何使用作為層。例如,如果用戶刷新路由,我們將需要匹配該路由并返回應用程序模板。運行應用程序該基礎用于構建具有和路由器的。 使用Laravel能優雅的構建API并且與Vue單頁面應用程序(SPA)完美結合。在本教程中,我們將展示如何啟動和運行Vue路由器以及用于構建SPA的La...
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器。可以利用此擴展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
摘要:自動代碼擴展開發時遵守的代碼風格是項目開發規范。遵照此規范,在實際操作中,有許多重復,接下來推薦一款專為此規范量身定制的代碼生成器。可以利用此擴展來快速構建項目原型。后續還會為大家帶來一些最新的技術擴展。 whoops 錯誤提示擴展 whoops 是一個非常優秀的 PHP Debug 擴展,它能夠使你在開發中快速定位出錯的位置。laravel默認安裝。showImg(https://s...
閱讀 1514·2021-08-09 13:47
閱讀 2774·2019-08-30 15:55
閱讀 3499·2019-08-29 15:42
閱讀 1120·2019-08-29 13:45
閱讀 3012·2019-08-29 12:33
閱讀 1747·2019-08-26 11:58
閱讀 989·2019-08-26 10:19
閱讀 2414·2019-08-23 18:00