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


関連記事

laravel logo

Laravelの便利メソッドupsert

1 はじめに2 upsertメソッドとは3 使い方4 タイムスタンプ5 生成SQL6 さいごに7 おすすめ書籍 はじめに LaravelでUPSERTを行いたい場合にupdateOrCreateメソッ ...

laravel logo

LaravelでのCookieファサード利用

1 はじめに2 基本メソッド2.1 付与2.2 取得2.3 削除3 他メソッド3.1 forever3.2 getQueuedCookies3.3 unqueue4 ミドルウェア4.1 AddQueu ...

laravel logo

laravel-enumを使ってみたら快適だった

1 はじめに2 enumについて3 環境4 導入5 enumクラス5.1 生成5.2 enumクラス編集5.3 日本語化6 マイグレーション6.1 生成6.2 編集7 プロパティのキャスト8 さいごに ...

RubyのHanamiチュートリアルをやってみた

1 はじめに2 紹介2.1 Hanamiとは?2.2 Hanamiを選ぶ理由2.2.1 軽量2.2.2 アーキテクチャとして2.2.3 スレッドセーフ3 チュートリアルのための準備4 実践4.1 はじ ...

WebアプリケーションにLINEログインを組み込む

1 はじめに2 LINEログインとは2.1 LINEログインでできること2.2 LINEログインのフロー3 LINEログインの設定3.1 プロバイダーを新規作成する3.2 チャネルを作成する3.3 リ ...

フォロー

blog-page_side_responsive

2021年9月
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

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