日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

laravel php resources,利用 Laravel Resources 来整合第三方 API 数据

發布時間:2024/2/28 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel php resources,利用 Laravel Resources 来整合第三方 API 数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于某些應用程序,可能需要第三方服務或者 API 來提取某些數據,將該數據轉換為所需的響應,并將其傳送到客戶端界面。

為此,我們需要找到一種方法,方便從控制器發送到視圖或最終用戶界面的數據保持一致性。

因此,可能需要構建一個代表應用程序中所需資源的新對象或類。

您或許可能會想『為什么我需要它?』,因為,您不希望在應用程序中公開所有的 API 響應數據,此外,你可能需要轉換該響應的某些字段等。

在本文中,我將向您展示一種簡單的方法,將來自第三方 API 傳入的數據轉換為應用程序中的資源,以幫您保持一致性。

在進一步討論之前:在這篇文章中,我假設您至少已經基本了解了什么是 API 以及該如何使用 API ,如何使用 Laravel 框架及其某些組件作為 Eloquent ORM 。 如果你不知道上面的文章大概在說明寫什么,你可能會發現一些挑戰性的概念,但是,嘿,不要氣餒,我相信你會發現這篇文章會給你帶來一定的價值。

一些關于 "Laravel resources" 的消息

'API Resources' 在 Laravel 5.5 中引入,作為是“將您的模型和模型集合表達并輕松轉換為 JSON 數據格式”的一種方式。

雖然這是官方的說明,并且您發現此部分在官方網站的 Eloquent 文檔上沒有此目錄索引,但您必須知道這些資源并未嚴格附加到 Eloquent ORM 當中。

在最基本的意義上來說,Eloquent 允許您將給指定對象轉換為不同的對象。

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\Resource;

class UserResource extends Resource

{

/**

* 將資源轉換為數組。

*

* @param \Illuminate\Http\Request

* @return array

*/

public function toArray($request)

{

return [

'id' => $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/wordpress-api-wit...

因此,以具體案例為例。 假設您的應用程序中有一個 WordPress 存儲庫,它從 WordPress API 中提取數據。

class WordpressRepository {

pubic function getPost($id)

{

$response = $this->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

namespace App\Resources;

use Illuminate\Http\Resources\Json\Resource;

class Post extends Resource

{

public function toArray($request)

{

return [

'title' => $this->resource['title'],

'content' => $this->resource['content'],

'slug' => $this->resource['slug']

];

}

}

返回單個資源實例

現在可以參照相同的例子,在你的 API 容器類中,你可以創建一個此資源新的實例,然后使用 resolve() 方法來返回轉換后的對象(這將返回一個數組)。

class WordpressRepository {

pubic function getPost($id)

{

$response = $this->apiClient->get(

'post',

$query = ['id' => $id]

);

$data = json_decode($response, true);

return Post::make($data)->resolve();

}

}

返回數據集合

我們可以創建一個專用的資源類 「PostCollection」。

$ php artisan make:resource PostCollection

namespace App\PublisherPlus\Resources;

use Illuminate\Http\Resources\Json\ResourceCollection;

class PostCollection extends ResourceCollection

{

public function toArray($request)

{

return [

'data' => $this->collection

->map

->toArray($request)

->all(),

'links' => [

'self' => 'link-value',

],

];

}

}

在上面的例子中,data 將會包含一個 Posts 數組,該數組的結構跟你在 Post 資源中定義的一樣。

你可以在這里了解更多關于 「resource collections」 的信息。

總結!

因此,如果你仔細研究 「resources」 的定義。你可以將其視為中間件,用于將已有數據轉為新的、不同格式的對象或數組。

本文中的所有譯文僅用于學習和交流目的,轉載請務必注明文章譯者、出處、和本文鏈接

我們的翻譯工作遵照 CC 協議,如果我們的工作有侵犯到您的權益,請及時聯系我們。

總結

以上是生活随笔為你收集整理的laravel php resources,利用 Laravel Resources 来整合第三方 API 数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。