Laravel7.x系でHTTPリクエスト用のAPIを作成して、
それをLaravelのコントローラーから
php
1use Illuminate\Support\Facades\Http;
上記のHTTPClientを使用して、リクエストしたいと考えています。
ざっくりですがAPIのルーティングは以下のようになっています。
php
1Route::group(["namespace" => "Api\v1", "prefix" => "v1/member", "as" => "member."], function () { 2 // ログイン認証処理を実行 3 Route::post("/authenticate", [ 4 "as" => "authenticate", 5 "uses" => "MemberController@authenticate", 6 ]); 7 // メールアドレス変更前の新規メールアドレス登録 8 Route::put("/email/{member_id}", [ 9 "as" => "email", 10 "uses" => "MemberController@email", 11 ]); 12 // 新規ユーザーの本登録処理 13 Route::post("/{token}", [ 14 "as" => "create", 15 "uses" => "MemberController@create" 16 ]); 17 // 指定したIDにマッチするユーザー情報を取得する 18 Route::get("/{member_id}", [ 19 "as" => "show", 20 "uses" => "MemberController@show" 21 ]); 22 // 指定したIDにマッチするユーザー情報の更新処理を実行する 23 Route::put("/{member_id}", [ 24 "as" => "update", 25 "uses" => "MemberController@update" 26 ]); 27 // ログアウト処理を実行 28 Route::get("/logout", [ 29 "as" => "logout", 30 "uses" => "MemberController@logout", 31 ]); 32});
この場合
php、
1 Route::post("/authenticate", [ 2 "as" => "authenticate", 3 "uses" => "MemberController@authenticate", 4 ]);
上記へのAPIにLaravelのコントローラからリクエストしたいと考えています。
その場合、Laravelのコントローラ内から
php
1 /** 2 * Undocumented function 3 * 4 * @param Request $request 5 * @return Response 6 */ 7 public function authenticate(Request $request) 8 { 9 try { 10 $post_data = $request->all(); 11 // ログイン処理用のAPIをコールする 12 $response = Http::asForm()->post(action("Api\v1\MemberController@authenticate"), [ 13 'email' => $post_data["email"], 14 'password' => $post_data["password"], 15 ]); 16 var_dump($response->ok()); 17 var_dump($response->body()); 18 } catch (\Throwable $e) { 19 return view("member.errors.index", [ 20 "error" => $e->getMessage(), 21 ]); 22 } 23 }
上記のような、処理でPOST
リクエストを実行したところ、処理自体は走っておりますが、呼び出し元へ処理がもどってこないのです。
試しに、timeout(3)などのメソッドチェーンをつなげましたが、結局呼び出し元へは戻ってこないまま、ブラウザが延々ローディング続けてしまいます。
他にも、https://yahoo.co.jpなど別のサイトへのリクエストを試したところ、問題なく
呼び出し元へレスポンスがもどってきました。
どなたか、Laravelで作ったAPIをLaravelのコントローラから正しく呼び出す方法をご存知であれば、ご教授くださいますようお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/22 05:26