我正在为不同的网站创建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');
请帮我解决。
非常感谢。答案 0 :(得分:1)
假设你想要一种方法来解决问题"将所有请求转换为一个控制器方法,你可以这样做:
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 :(得分:0)
我认为您还可以使用API网关https://www.nginx.com/blog/building-microservices-using-an-api-gateway/。正如Daan所写,你需要一条路线来解决所有服务的单一入口点。
然后,您可以构建服务解析程序并从感兴趣的服务获取数据。你也可以在这里缓存响应