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


関連記事

Go言語

Go言語、ゴルーチン(goroutine)で並列処理を

はじめに こんにちは、nukkyです。Go連載7回目を担当させていただきます。 プログラムを書く上ではなかなか避けては通れない非同期処理について今回は記事にしたいと思います。 ゴルーチン Goにはスレ ...

laravel logo

Laravel Admin でCSVインポートを実装する

はじめに こんにちは。カイザーです。今回は、Laravel AdminにCSVインポート機能を追加する方法について、紹介します。 今回は、以下のようなbooksテーブルとBookモデルに対しての、CS ...

laravel logo

LaravelでHTTP通信

はじめに 外部サーバとの連携など、HTTPリクエストを投げたいケースが有るとおもいます。今回は Guzzle を使ってHTTPリクエストを投げる方法を紹介します。 インストール ルートディレクトリで以 ...

Go言語

Go 1.18で追加されるGenericsの紹介

はじめに まもなくリリース予定(2022年2月)のGo 1.18では、待望?のGenericsが導入されます。そこで、現在利用できるGo 1.18beta1で、Genericsの使い方を紹介します。 ...

markdownで書けるドキュメントツールのGitbookを試す

はじめに こんにちは。開発ドキュメントとしてwikiを使うケースはままあると思いますが、皆さんはどんなツールをお使いでしょうか。GithubやBitbucketといったサービス付属のwiki、Qiit ...

フォロー

blog-page_side_responsive

2021年9月
日 月 火 水 木 金 土
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

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