こんばんは、ウチイダです。
先日お引き受けした案件で、Laravelから外部APIを利用する実装が必要になりました。
いつものように、ローカル環境のSailで動作確認しつつ実装していきます。
しかし、Httpファサードで外部APIにアクセスしようとするとResolving タイムアウトが発生してしまいました。
どうやら、名前解決に失敗しているみたいです。
Dockerネットワーク外のドメインの名前解決をするDNSが設定されていないことが原因だったので、Docker-compose.ymlに、dnsを設定しました。
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
# (略)
# 外部DNSを指定する
dns: 8.8.8.8
いったんコンテナを再起動してDNSを認識できるようにしてからリトライ。
APIサーバを見つけて、レスポンスを取ることができました。
ちなみに、これに苦労してあれこれコントローラのアクションメソッドに書き散らかしてしまったので、その後サービスクラスに切り出すのにそこそこ苦労しました(現在進行形でしてます)。
思いがけない沼にはまると、設計やクラス分解がおろそかになりがちなので気を付けたいです。
以上です。
あなたのお役に立てれば幸いです。