能建立檔案之後,當然也要能讀取檔案囉!最好是能夠讀取遠端服務的檔案,這樣除了資料庫內的資料之外,就能有更多樣的資料來源了。
今天我們來聊 Laravel 怎麼利用 Http Client 取得其他伺服器裡面的檔案!
Laravel 裡面已經安裝好了 guzzlehttp
套件,並且做了一層包裝。
我們只要使用 Illuminate\Support\Facades\Http
就能取得其他伺服器的回應
use Illuminate\Support\Facades\Http;
$response = Http::get('https://www.google.com');
取得回應之後,我們就能根據該回應的內容,判斷後續對應的行為。
比方說,可以取得回應的 Http Status
$response->status()
或者取得回應的 Header key-value pair 的陣列
$response->headers()
又或者取得回應的 body
$response->body()
當然,有時候資料不能這麼簡單的透過 HTTP GET 取得
可能必須透過 POST 取得
$response = Http::post('http://example.com/users', [
'name' => 'Steve',
'role' => 'Network Administrator',
]);
有些網站接收的不是 API 格式的內容,而是網頁的 Form Submit
$response = Http::asForm()->post('http://example.com/users', [
'name' => 'Sara',
'role' => 'Privacy Consultant',
]);
或者接收的不是純文字內容的請求,而是在請求的 body 內包含檔案
$response = Http::withBody(
base64_encode($photo), 'image/jpeg'
)->post('http://example.com/photo');
另外,也有可能其他伺服器需要特定格式的 Header 才接收請求
$response = Http::withHeaders([
'X-First' => 'foo',
'X-Second' => 'bar'
])->post('http://example.com/users', [
'name' => 'Taylor',
]);
以上這些需求,都能很簡單的用 Laravel 做到。
今天有關 Laravel 使用 Http Client 的作法,就介紹到這邊,我們明天見!