Php 如何使用guzzlehttp创建集线器(集中式API)?

Php 如何使用guzzlehttp创建集线器(集中式API)?,php,laravel,laravel-routing,guzzle,guzzlehttp,Php,Laravel,Laravel Routing,Guzzle,Guzzlehttp,我正在为不同的网站创建API。但在将请求直接传递给网站之前,它将通过中间层服务器,即中央服务器,然后中央服务器将请求传递给相应的网站。意味着所有请求都将转到中央服务器,然后中央服务器将与各自的站点通信,请求数据将按原样传递。所有网站都是在php laravel上开发的,架构几乎相同。我发现Guzzlehttp用于请求处理,如果有其他方法可以满足要求,请告诉我 同样对于laravel路由,我需要为所有路由调用相同的函数 目前我有以下路线 Route::get('users', 'QuestsCon

我正在为不同的网站创建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');
请帮我解决这个问题


非常感谢。

假设您想要一种将所有请求“瓶颈”到一个控制器方法中的方法,您可以执行以下操作:

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){
    ...
}

我认为,此外,您还可以使用API网关。正如Daan所写,您需要一条路由,该路由将通过单个入口点解析所有服务


然后,您可以构建服务解析器并从感兴趣的服务获取数据。您也可以在此处缓存响应

我不太清楚您遇到了什么问题。您表示希望对不同的请求使用相同的控制器方法,并提供使其工作的代码。有什么问题吗?@DaanMeijer我想他期待的是某种代理服务器,它可以做一些工作,并重新路由到不同的服务器以响应。你可以在laravel中检查子域路由,如果它是内部的,
中间件可以用于此app@cerlin老板,你明白我的意思了,我正在开发一个中心,将请求重定向到相应的servers@CerlinBoss,是的,我也检查了子例程,但对我没有用处,感谢您的提示响应谢谢您的回答我也尝试了这种方式,但在这里我无法应用路由验证中间件,它将接受任何路由,无论它是否有效。我想拒绝不存在其他方法的路由,如Route::any({url},'RequestController@redirect')->其中('url','([A-z\d-\/.]+)?');嗯,当访问没有结果的路由时,可以抛出一个
Symfony\Component\HttpKernel\Exception\NotFoundHttpException
。我想我不太明白问题是什么。是否要应用路由筛选?您希望每个url都在瓶颈函数中结束,还是希望指定哪个url应该在瓶颈函数中结束?是的,这样我可以显示异常,但您的答案将接受所有url,无论是/user、/user hold还是/blablabla…,它将允许任何url,我希望重定向到特定url,就像我有一个有效的url数组,如果请求不属于数组中的url,那么它应该被拒绝,最后我需要在路由中写100多行,但我只是在寻找替代的url好的,所以检查控制器方法中调用的url是否正确。如果是的话,施展你的魔法。如果不是,则抛出NotFoundHttpException。这在什么方面不能按您希望的方式运行?不。这不是关于使用第三方API。这是关于网关的概念。据我所知,您正在构建API网关。它是一个获取所有请求并从不同服务收集信息的层。您可以将其用作服务的路线图和所有请求响应的缓存层。