Как я могу использовать guzzlehttp для создания Hub (централизованный API)?

Я создаю API для разных сайтов. но перед непосредственным отправлением запроса на веб-сайт он будет проходить через сервер среднего уровня, то есть центральный сервер, а затем центральный сервер будет передавать запрос на соответствующий веб-сайт. означает, что все запросы будут отправлены на центральный сервер, после чего центральный сервер свяжется с соответствующими сайтами, и данные запроса будут переданы как есть. Все сайты разработаны на php laravel, архитектура практически одинаковая. Я нашел Guzzlehttp для обработки запросов, если есть какой-либо другой способ удовлетворить требование, пожалуйста, дайте мне знать,

также для маршрутизации Laravel мне нужно вызвать одну и ту же функцию для всех маршрутов
В настоящее время у меня следующие маршруты

Route::get('users', 'QuestsController@getUsers');
Route::post('lists', 'QuestsController@postLists');
Route::post('add-user', 'QuestsController@postAddUser');
Route::post('update-status', 'QuestsController@postUpdateStatus');
Route::post('delete', 'QuestsController@postDelete');

вместо вызова разных методов контроллера, я хочу вызвать один и тот же метод для всех маршрутов, как в следующем примере

Route::get('users', 'QuestsController@central');
Route::get('add-user', 'QuestsController@central');
Route::post('delete', 'QuestsController@central');

пожалуйста, помогите мне для решения.

большое спасибо.

2

Решение

Предполагая, что вам нужен способ «узкого места» всех запросов в одном методе контроллера, вы можете сделать что-то вроде этого:

Route::get('{url}', 'QuestsController@centralGet')->where('url', '.*');
Route::post('{url}', 'QuestsController@centralPost')->where('url', '.*');

Теперь у вас есть два метода контроллера, каждый из которых принимает 1 (дополнительный) параметр, который вы можете использовать для дальнейшей идентификации правильного ответа.
Методы контроллера будут выглядеть примерно так:

public function centralGet($url, Request $request){
...
}

public function centralPost($url, Request $request){
...
}
1

Другие решения

Я думаю, что к тому же вы могли бы хотеть использовать шлюз API https://www.nginx.com/blog/building-microservices-using-an-api-gateway/. Как писал Даан, вам нужен один маршрут, который будет разрешать все Услуги через единую точку входа.

Затем вы можете создать распознаватель служб и получать данные от заинтересованных служб. Вы также можете кэшировать ответ здесь

0

По вопросам рекламы [email protected]