Проблема с Laravel при вызове API Laravel из другого проекта LaravelPhp

Кемеровские программисты php общаются здесь
Гость
Проблема с Laravel при вызове API Laravel из другого проекта Laravel

Сообщение Гость »


Я работаю с двумя проектами Laravel: Project One и Project Two, работающими на моем локальном хосте. Первый проект выполняет вызовы API к Проекту два. Оба проекта используют отдельные базы данных MySQL, при этом Проект второй настроен на использование соединения, отличного от стандартного, с именем mysql_oth в config/database.php. Однако когда Project One выполняет вызов API к Project Two, Project Two пытается использовать соединение с базой данных mysql по умолчанию (Project one) вместо mysql_oth. Эта проблема не возникает при отправке запросов к Проекту два напрямую через Postman; в этом случае используется правильное соединение mysql_oth.
Вот что я проверил на данный момент:
  • Соединение mysql_oth правильно настроено в Проекте 2
    config/database.php.
  • Direct вызовы конечной точки API Project Two из
    Postman правильно используют соединение mysql_oth.
  • Проблема возникает только тогда, когда Project One выполняет вызов API к Project Two; каким-то образом это приводит к тому, что Второй проект возвращается к соединению mysql по умолчанию (Первый проект). Я
  • Я очистил конфигурацию, маршрут и кеш Laravel с помощью ремесленных
    команд в обоих проектах.
< p>Код первого проекта:

Код: Выделить всё

$request->authenticate();

$request->session()->regenerate();

$response = Http::post('http://localhost:82/laravel/project_2/api/appLogin', [
'email' => $request->email,
'password' => $request->password,
])->throw();

if ($response->successful()) {
$token = $response->json('token');

$request->session()->put('apptoken', $token); // Save token in session
return redirect()->intended(RouteServiceProvider::HOME);
} else {

Auth::guard('web')->logout();

$request->session()->invalidate();
$request->session()->regenerateToken();

return redirect(url('login'))->withErrors(['email' => 'The provided credentials are incorrect -- .']);
}
Project two Code :

Код: Выделить всё

public function login(Request $request)
{
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);

Log::info('API call sent', [
'method' => request()->method(),
'url' => request()->url(),
'data' => request()->all(),
]);
if (Auth::attempt($credentials)) {
// Authentication successful
$token = auth()->user()->createToken('authToken')->plainTextToken;
return response()->json(['token' => $token], 200);
} else {
// Authentication failed
return response()->json(['message' => 'Invalid credentials'], 401);
}
}
ENV settings:
Project one

Код: Выделить всё

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_one,
Project Two

Код: Выделить всё

DB_CONNECTION=mysql_oth
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_two
Questions:
  • Why does Project Two switch to the default (Project one's) database connection when called from Project One , and how can I prevent this?
  • Is there a Laravel-specific configuration or runtime aspect that I might be overlooking, which could cause this behavior?
Any guidance or insights would be greatly appreciated. Thank you!


Источник: https://stackoverflow.com/questions/781 ... el-project

Вернуться в «Php»