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言語

goroutineとchannelとContext

1 はじめに2 並行処理と並列処理3 goroutine4 channel4.1 channelからデータ受信4.2 for-range でのデータ受信4.3 複数のchannelを受信4.4 buf ...

rails

Railsで複合主キーのテーブルを扱う

1 はじめに1.1 前提条件2 実装例2.1 config2.2 マイグレーション2.3 モデル3 さいごに はじめに RailsでWebサービスを開発する際のDB設計では基本的にidが主キーになると ...

Go言語

Go 1.19でGoDocに追加された機能

1 はじめに2 GoDocの機能追加2.1 セクションタイトル(Headings)2.2 リンク2.3 リスト2.4 パッケージの追加3 おまけ4 さいごに5 おすすめ書籍 はじめに 8月2日にGo ...

laravel logo

Laravelのバリデーションtips

1 はじめに2 配列のバリデーションでRule::uniqueを使う時のカラム名を指定したい3 配列バリデーションのエラーメッセージ制御4 カスタムバリデーションで、他の属性名を参照したい5 番外:複 ...

Go言語

Go言語のエラーハンドリングとログローテーション

1 はじめに2 エラーハンドリング2.1 error インターフェース2.2 pkg/errors パッケージ3 独自のエラータイプ付き errorsパッケージを作成4 log パッケージ4.1 lo ...

フォロー

blog-page_side_responsive

2021年9月
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

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