Я хочу понять путь отслеживания ответа и определить классы, которые он проходит. Я столкнулся с проблемой во всех API: я постоянно получаю код состояния 200, независимо от фактического статуса ответа. Я проверил, что заголовки ответов изначально установлены правильно с помощью «Content-Type: application/json», регистрируя ответ перед его возвратом на запрашивающий сервер. Однако в какой-то момент заголовок меняется на «text/html» вместо «application/json». Я ищу способ отладить это и определить, на каком этапе происходит изменение заголовка. Кроме того, мне интересно, может ли эта проблема быть связана с развертыванием на сервере GoDaddy. Мы будем очень признательны за любые идеи или рекомендации по устранению неполадок и решению этой проблемы.
public function login(LoginRequest $request)
{
$subject = 'Invalid information enetered.Please try again';
$response = response()->negative_response(false,$subject, 404);
$email = strtolower(trim(data_get($request,'email',null)));
$password = data_get($request,'password');
$input_language = data_get($request,"language",null);
$language = $input_language == "EN" ? "english" : "spanish";
$user_data = LoginPageUserDetail::where('email',$email)->first();
$token_type = 'login';
if ($user_data)
{
if (password_verify($password,data_get($user_data,'password'))) {
if ($user_data->is_active == 1)
{
$user_id = data_get($user_data,'id',null);
if (!$user_data->language)
{
$language_data = UserLanguage::assignLanguageToUser($language);
$language_id = data_get($language_data,"id",null);
User::updateUserData($user_id,['language_id'=>$language_id]);
}
$token_data = Usertoken::addToken($user_id,$token_type);
$token = data_get($token_data,'token',null);
$user_data= new UserResource($user_data,$token);
$subject = 'Successfully Login';
$response = response()->positive_response(true,$subject,$user_data,200);
}
}
}
CrewLog::saveLog($subject,$this->current_url,$this->current_function_name,$this->current_request_ip,$email);
return $response;
}
И это ответ
public function boot(): void
{
Response::macro('positive_response', function ($error,$message,$data,$status_code) {
return response()->json([
'success' => $error,
'message' => $message,
'data' => $data
], $status_code);
});
Response::macro('negative_response', function ($error, $message, $status_code) {
return response()->json([
'success' => $error,
'message' => $message,
'data' => null
], $status_code);
});
}
У меня к вам два вопроса: какой провайдер размещает ваши макросы? -- также исходящие ответы обрабатываются в обработчике, так как насчет этого? В остальном вы предоставили кучу ненужного кода, но, сосредоточившись на ответе, я думаю, что ничего страшного, если вы сможете ответить на приведенные выше вопросы.
Я использую хост макросов в качестве AppServiceProvider. @shahsawood






Я столкнулся с этой проблемой некоторое время назад. Я создал вспомогательный класс и автоматически загрузил этот класс с помощью композитора в качестве процесса автоматической загрузки композитора, и он работал хорошо, но когда я загружал проект в godaddy, я обнаружил ту же проблему, что и при обнаружении кода состояния 200 при каждом запросе. Я предлагаю удалить вспомогательный класс, а также удалить этот класс из автозагрузки и создать для него класс обслуживания. Я думаю, вы хорошо найдете ответ. Дайте мне знать, если вы столкнулись с какой-либо проблемой, более связанной с этим.
С контроллером входа происходит очень много всего, и я не совсем понимаю отношение к макросам, но, помимо этого, если вы ожидаете ответа JSON от вашего API Laravel, вам следует использовать заголовок
Accept: application/json, а неContent-Type: application/json.