成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

利用 Laravel Resources 來(lái)整合第三方 API 數(shù)據(jù)

Jonathan Shieber / 1869人閱讀

摘要:對(duì)于某些應(yīng)用程序,可能需要第三方服務(wù)或者來(lái)提取某些數(shù)據(jù),將該數(shù)據(jù)轉(zhuǎn)換為所需的響應(yīng),并將其傳送到客戶端界面。使用中間件來(lái)處理響應(yīng)數(shù)據(jù)可以確保數(shù)據(jù)庫(kù)的一致性。

對(duì)于某些應(yīng)用程序,可能需要第三方服務(wù)或者 API 來(lái)提取某些數(shù)據(jù),將該數(shù)據(jù)轉(zhuǎn)換為所需的響應(yīng),并將其傳送到客戶端界面。

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

因此,可能需要構(gòu)建一個(gè)代表應(yīng)用程序中所需資源的新對(duì)象或類(lèi)。

您或許可能會(huì)想『為什么我需要它?』,因?yàn)?,您不希望在?yīng)用程序中公開(kāi)所有的 API 響應(yīng)數(shù)據(jù),此外,你可能需要轉(zhuǎn)換該響應(yīng)的某些字段等。

在本文中,我將向您展示一種簡(jiǎn)單的方法,將來(lái)自第三方 API 傳入的數(shù)據(jù)轉(zhuǎn)換為應(yīng)用程序中的資源,以幫您保持一致性。

在進(jìn)一步討論之前:在這篇文章中,我假設(shè)您至少已經(jīng)基本了解了什么是 API 以及該如何使用 API ,如何使用 Laravel 框架及其某些組件作為 Eloquent ORM 。 如果你不知道上面的文章大概在說(shuō)明寫(xiě)什么,你可能會(huì)發(fā)現(xiàn)一些挑戰(zhàn)性的概念,但是,嘿,不要?dú)怵H,我相信你會(huì)發(fā)現(xiàn)這篇文章會(huì)給你帶來(lái)一定的價(jià)值。
一些關(guān)于 "Laravel resources" 的消息

"API Resources" 在 Laravel 5.5 中引入,作為是“將您的模型和模型集合表達(dá)并輕松轉(zhuǎn)換為 JSON 數(shù)據(jù)格式”的一種方式。

雖然這是官方的說(shuō)明,并且您發(fā)現(xiàn)此部分在官方網(wǎng)站的 Eloquent 文檔上沒(méi)有此目錄索引,但您必須知道這些資源并未嚴(yán)格附加到 Eloquent ORM 當(dāng)中。

在最基本的意義上來(lái)說(shuō),Eloquent 允許您將給指定對(duì)象轉(zhuǎn)換為不同的對(duì)象。

 $this->id,
            "name" => $this->name,
            "email" => $this->email,
            "created_at" => $this->created_at,
            "updated_at" => $this->updated_at,
        ];
    }
}

您可以通過(guò)閱讀官方文檔了解有關(guān) Resources 的所有信息:Eloquent: API Resources

使用第三方 API

在使用第三方 API 時(shí),您需要找到一種方法將傳入的響應(yīng)數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)一致的數(shù)據(jù)。

有關(guān) Laravel 的最新消息:不久前 Eric L. Barnes 發(fā)表了一篇文章,描述了他如何使用 Laravel 為 laravel-news 網(wǎng)站建立一個(gè)前端頁(yè)面,然后用 WordPress  作為后端并從 WordPress API 讀取數(shù)據(jù)。你可以點(diǎn)擊這里查看所有文章。?https://laravel-news.com/word...

因此,以具體案例為例。 假設(shè)您的應(yīng)用程序中有一個(gè) WordPress 存儲(chǔ)庫(kù),它從 WordPress API 中提取數(shù)據(jù)。

apiClient->get(
            "post",
             $query = ["id" => $id]
        );
        // return as array
        return json_decode($response, true);
    }
}

假設(shè)您從 WordPress API 接收此對(duì)象(數(shù)據(jù))

// wordpress version 0.1
{
    ID: 123
    post_title: "some title"
    post_content: "some content",
    post_author: "joe",
    publish_date: "01-01-2001"
}

您可以將此響應(yīng)包裝到一個(gè)數(shù)組中,然后在所有控制器或視圖上使用此數(shù)據(jù)。

響應(yīng)格式一致性

不妨想一想,如果 WordPress 的 API 更新了怎么辦。假如新版本會(huì)返回一個(gè)不同格式的數(shù)據(jù)。

// wordpress version 0.1
{
    post_id: 123
    title: "some title"
    content: "some content",
    author: "joe",
    date: "01-01-2001"
}

那么你就需要在項(xiàng)目的多個(gè)位置把 $post["post_title"] 替換成 $post["title"] 。

使用中間件來(lái)處理響應(yīng)數(shù)據(jù)可以確保數(shù)據(jù)庫(kù)的一致性。當(dāng)響應(yīng)的格式增加時(shí),你只需要更新某段代碼即可。

使用 API 資源批量處理數(shù)據(jù)

正如我之前提到的,你可以使用沒(méi)有Eloquent的 「Resources」,下面就是一個(gè)很好的例子。
您需要做的第一件事是創(chuàng)建一個(gè)新的「Post」資源; 使用 artisan:

$ php artisan make:resource Post

 $this->resource["title"],
            "content" => $this->resource["content"],
            "slug" => $this->resource["slug"]
        ];
    }
}
返回單個(gè)資源實(shí)例

現(xiàn)在可以參照相同的例子,在你的 API 容器類(lèi)中,你可以創(chuàng)建一個(gè)此資源新的實(shí)例,然后使用 resolve() 方法來(lái)返回轉(zhuǎn)換后的對(duì)象(這將返回一個(gè)數(shù)組)。

apiClient->get(
            "post",
            $query = ["id" => $id]
        );
        $data = json_decode($response, true);
        return Post::make($data)->resolve();
    }
}
返回?cái)?shù)據(jù)集合

我們可以創(chuàng)建一個(gè)專(zhuān)用的資源類(lèi) 「PostCollection」。

$ php artisan make:resource PostCollection

 $this->collection
                          ->map
                          ->toArray($request)
                          ->all(),
            "links" => [
               "self" => "link-value",
             ],
        ];
    }
}

在上面的例子中,data 將會(huì)包含一個(gè) Posts 數(shù)組,該數(shù)組的結(jié)構(gòu)跟你在 Post 資源中定義的一樣。

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

API 資源

總結(jié)!

因此,如果你仔細(xì)研究 「resources」 的定義。你可以將其視為中間件,用于將已有數(shù)據(jù)轉(zhuǎn)為新的、不同格式的對(duì)象或數(shù)組。

更多翻譯文章請(qǐng)見(jiàn) PHP / Laravel 開(kāi)發(fā)者社區(qū) https://laravel-china.org/top...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/30025.html

相關(guān)文章

  • Laravel學(xué)習(xí)筆記三-前端工作流

    摘要:本節(jié)將學(xué)習(xí)是如何利用形成一套完整的前端工作流模式的。你也可以使用下面命令來(lái)強(qiáng)制安裝所有模塊,不管該模塊之前是否安裝過(guò)由于國(guó)內(nèi)墻的原因,使用安裝會(huì)非常緩慢,慢到想切,不過(guò)還好,我們可以使用淘寶提供的國(guó)內(nèi)鏡像進(jìn)行下載。 本節(jié)將學(xué)習(xí) Laravel 是如何利用 Sass, NPM, Gulp形成一套完整的前端工作流模式的。 一、句法強(qiáng)大的樣式表Sass Sass 是一種可用于編寫(xiě)CSS的語(yǔ)言...

    liuchengxu 評(píng)論0 收藏0
  • Laravel5.4新特性-Laravel-mix和laravel-elixir比較

    摘要:之前的版本用的管理全段資源,版本開(kāi)始使用的來(lái)管理。不過(guò),并不是強(qiáng)制要求在開(kāi)發(fā)期間使用它。發(fā)布問(wèn)題標(biāo)題標(biāo)題編輯器容器內(nèi)容發(fā)布問(wèn)題實(shí)例化編輯器設(shè)置如果沒(méi)有預(yù)加載,否則不會(huì)出現(xiàn) Laravel5.4 之前的版本用 gulp 的 laravel-elixir管理全段資源,Laravel5.4 版本開(kāi)始使用webpack 的 Laravel Mix 來(lái)管理。 一、簡(jiǎn)介 Laravel Mix 提...

    187J3X1 評(píng)論0 收藏0
  • [譯]如何基于Laravel構(gòu)建Vue應(yīng)用(一)

    摘要:使用能優(yōu)雅的構(gòu)建并且與單頁(yè)面應(yīng)用程序完美結(jié)合。我們將重點(diǎn)關(guān)注所需的所有部分,然后在后續(xù)教程中,我們將進(jìn)一步演示如何使用作為層。例如,如果用戶刷新路由,我們將需要匹配該路由并返回應(yīng)用程序模板。運(yùn)行應(yīng)用程序該基礎(chǔ)用于構(gòu)建具有和路由器的。 使用Laravel能優(yōu)雅的構(gòu)建API并且與Vue單頁(yè)面應(yīng)用程序(SPA)完美結(jié)合。在本教程中,我們將展示如何啟動(dòng)和運(yùn)行Vue路由器以及用于構(gòu)建SPA的La...

    Rocko 評(píng)論0 收藏0
  • laravel開(kāi)發(fā)擴(kuò)展記錄

    摘要:自動(dòng)代碼擴(kuò)展開(kāi)發(fā)時(shí)遵守的代碼風(fēng)格是項(xiàng)目開(kāi)發(fā)規(guī)范。遵照此規(guī)范,在實(shí)際操作中,有許多重復(fù),接下來(lái)推薦一款專(zhuān)為此規(guī)范量身定制的代碼生成器??梢岳么藬U(kuò)展來(lái)快速構(gòu)建項(xiàng)目原型。后續(xù)還會(huì)為大家?guī)?lái)一些最新的技術(shù)擴(kuò)展。 whoops 錯(cuò)誤提示擴(kuò)展 whoops 是一個(gè)非常優(yōu)秀的 PHP Debug 擴(kuò)展,它能夠使你在開(kāi)發(fā)中快速定位出錯(cuò)的位置。laravel默認(rèn)安裝。showImg(https://s...

    fancyLuo 評(píng)論0 收藏0
  • laravel開(kāi)發(fā)擴(kuò)展記錄

    摘要:自動(dòng)代碼擴(kuò)展開(kāi)發(fā)時(shí)遵守的代碼風(fēng)格是項(xiàng)目開(kāi)發(fā)規(guī)范。遵照此規(guī)范,在實(shí)際操作中,有許多重復(fù),接下來(lái)推薦一款專(zhuān)為此規(guī)范量身定制的代碼生成器??梢岳么藬U(kuò)展來(lái)快速構(gòu)建項(xiàng)目原型。后續(xù)還會(huì)為大家?guī)?lái)一些最新的技術(shù)擴(kuò)展。 whoops 錯(cuò)誤提示擴(kuò)展 whoops 是一個(gè)非常優(yōu)秀的 PHP Debug 擴(kuò)展,它能夠使你在開(kāi)發(fā)中快速定位出錯(cuò)的位置。laravel默認(rèn)安裝。showImg(https://s...

    魏憲會(huì) 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<