BackEnd

LaravelのHttp Facade

投稿日:

はじめに

現在関わっている案件でHttpクライアントライブラリのGuzzleHttpを利用してHttp通信する事がありました。

Laravelではこれを楽に実装出来てしまうHttp Facadeが用意されてあったので、こちらを紹介したいと思います。

Http Facadeは、Laravel7.から導入されたHttpクライアント機能で、内部ではGuzzleHttpを使用しています。GuzzleHttpのラッパーとなっています。

GuzzleHttpの参考:LaravelでHTTP通信

基本定な使い方

http通信ではこちらこちらを利用させてもらっています。

get

URLの指定のみで使用可能。 Illuminate\Http\Client\Response インスタンスが返却される為、レスポンスがJSONであれば配列にパースする事が可能です。

クエリパラメーターを付ける場合は、第二引数に連想配列で設定する事が出来ます。

post

第二引数に送信データを連想配列で設定する事が出来ます。

また、デフォルトは Content-type: application/json になりますが、 asForm() を付けると
Content-type: application/x-www-form-urlencoded にしてPOSTする事が出来ます。

タイムアウト

timeout() メソッドで秒単位でタイムアウト設定をする事が出来ます。
指定秒数を超えると Illuminate\Http\Client\ConnectionException が投げられます。

リトライ

クライアントまたはサーバーのエラーが発生した場合に、再度リクエストを行いたい場合は retry() メソッドが使用出来ます。

第一引数にリトライ試行回数、第二引数にリトライ間隔をミリ秒数で指定します。リクエストが全て失敗した場合、 Illuminate\Http\Client\RequestException が投げられます。

マルチパートリクエスト

ファイル送信などしたい場合は、 attach() メソッドが使用出来ます。

第二引数にファイル内容と第三引数にファイル名を指定出来ます。

ファイルを複数送りたい場合は、 attach() メソッドをつないで送る事が出来る様です。

エラー処理

GuzzleHttpと異なり、エラー(ステータスコード400 ~ 500)時に例外が投げられません。

その為、 try ~ catch で囲まずに、用意されてある返却結果の判定メソッドで処理分けする事が出来ます。

細かく判定出来るので、それぞれの処理分けを簡単に行う事が出来ます。

Exceptionを投げたい場合は throw() メソッドが使用出来ます。

これは、エラー発生時には Illuminate\Http\Client\RequestException を投げて、通常時はレスポンスインスタンスを返却します。

さいごに

Httpファサードを利用すると簡潔にHttp通信処理が実装出来そうです。

今の現場ではLaravelバージョンが7.未満で使えませんが、機会があれば是非利用したい機能だと思いました。

おすすめ書籍

PHPフレームワークLaravel Webアプリケーション開発 バージョン8.x対応 PHPフレームワークLaravel入門 第2版 PHPフレームワーク Laravel実践開発

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

rails

Railsのバリデーション

1 はじめに2 基本的なバリデーション3 EachValidatorクラス4 Validatorクラス5 autoload_pathsの編集6 さいごに はじめに 今回はRailsのActiveRec ...

Go言語

Golangのsyncパッケージによる同期・排他制御

1 はじめに2 sync.WaitGroup3 sync.Mutex4 sync.RWMutex5 sync.Map6 sync.Once7 sync.Pool8 さいごに9 おすすめ書籍 はじめに ...

laravel logo

[Laravel]データベースの暗号化について考えてみる

1 はじめに2 環境3 Laravelでの暗号化4 暗号化されたカラムは、そのままではLIKE検索ができない4.1 問題点4.2 解決案1:全件取得してPHP側でがんばって検索する4.3 解決案2:暗 ...

rails

Rails 6の変更点と新機能

1 はじめに2 概要3 Rubyのサポートバージョン4 Webpacker4.1 Webpackerの設定4.2 Webpackerでのビルド4.3 ビルドしたJavaScriptファイルを読み込む4 ...

aws

ALB+EC2な環境でhttpをhttpsにリダイレクトする

1 はじめに1.1 前提条件2 ALBの設定3 Nginxの設定3.1 注意点4 さいごに はじめに httpsに対応済みのWebサイトの場合、httpでアクセスされた時にhttpsでリダイレクトする ...

フォロー

blog-page_side_responsive

2021年9月
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。