API Laravel всегда возвращают в ответ код состояния 200

Я хочу понять путь отслеживания ответа и определить классы, которые он проходит. Я столкнулся с проблемой во всех 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);
        });
    }

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

Repox 08.03.2024 08:01

У меня к вам два вопроса: какой провайдер размещает ваши макросы? -- также исходящие ответы обрабатываются в обработчике, так как насчет этого? В остальном вы предоставили кучу ненужного кода, но, сосредоточившись на ответе, я думаю, что ничего страшного, если вы сможете ответить на приведенные выше вопросы.

shah sawood 08.03.2024 09:11

Я использую хост макросов в качестве AppServiceProvider. @shahsawood

imran11439 08.03.2024 11:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
214
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я столкнулся с этой проблемой некоторое время назад. Я создал вспомогательный класс и автоматически загрузил этот класс с помощью композитора в качестве процесса автоматической загрузки композитора, и он работал хорошо, но когда я загружал проект в godaddy, я обнаружил ту же проблему, что и при обнаружении кода состояния 200 при каждом запросе. Я предлагаю удалить вспомогательный класс, а также удалить этот класс из автозагрузки и создать для него класс обслуживания. Я думаю, вы хорошо найдете ответ. Дайте мне знать, если вы столкнулись с какой-либо проблемой, более связанной с этим.

Другие вопросы по теме