私はサードパーティのAPIを呼び出し、その応答を返すルートを持っています。このルートは、ID:/my/route/{id}
のようなパラメータとしてIDを取ることができます。なぜ私のダイナミックルートは1つだけのカーカスで200を返しますか?
私が/my/route/1
を要求すると、私は/my/route/2
、/my/route/3
、/my/route/4
などを取得すると500エラーが発生します。
面白いことは、私はいつも正しい応答のボディを得ることです。したがって、200と500の両方の応答が私が必要とするデータを返しています。
<?php
namespace App\Http\Controllers\Matrix;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class SponsorReadingController extends Controller
{
/**
* SponsorReadingController constructor.
*/
public function __construct()
{
$this->cookieJar = app('MatrixCookieJar');
$this->client = app('GuzzleClientForMatrix');
}
public function getSponsor($sponsorId, Request $request)
{
// TODO: Refactor this monstrous function
if (!AuthController::isAlreadyLoggedIn($request)) {
$loginRes = AuthController::loginToMatrixApi($this->cookieJar);
if ($loginRes->getStatusCode() === 200) {
$sessionId = AuthController::getSessionIdFromResponse($loginRes);
} else {
return $loginRes;
}
} else {
$sessionId = null;
AuthController::setAuthCookie(
$this->cookieJar, $request->cookie('matrix_api_session')
);
}
$respData = [
'error' => null,
'message' => null,
'data' => json_decode(
$this->client->get(
'/admin/sponsor/detail',
[
'query' => ['sponsorId' => $sponsorId],
'cookies' => $this->cookieJar,
'allow_redirects' => false
]
)->getBody())->response
];
return $this->handleResponse($respData, $sessionId);
}
/**
* Handle the response with the provided data and
* cookie value.
*
* @param array $respData
* @param string $cookieVal
* @return Response
*/
public function handleResponse($respData, $cookieVal)
{
if (!empty($cookieVal)) {
return response()->json($respData)->withCookie(
cookie('matrix_api_session', $cookieVal, 29, '/matrix/api')
);
}
return response()->json($respData);
}
EDIT:私はhandleResponse(...)
内dd($res)
の代わりreturn $res
をすれば私は、奇妙な200のステータスコードを取得getSponsor(..)
が、ここでトリガされたとき
私の問題があります。参考のため
cookies/jar.json
はLaravelのpublic
フォルダにあったところ(私はそれらを格納するためにLaravel自身の保存フォルダを使用して終了したので、私はこのことから私のサービスプロバイダを変更しなければなりませんでしたハンドルレスポンスやgetSponsorのエラーですgetSponsorがhandleResponseから結果を返そうとしたときに何かが起きているようです – Daniel'getSponsor()'は最終的に 'handleResponse()'を返します。ステータスコードはすべての呼び出しで常に200になります。私は頭を壊しています。 – jstudios
Wh handleResponseに送信する前に$ respDataをダンプするとどうなりますか?あなたはいくつかのIDが働いていると言いましたが、何もしません。また、$ resから200レスポンスから戻るのは唯一のものですか?今テストしたところ、Response()に渡したデータを含むレスポンスオブジェクトが返されました。 – Daniel