digitalcloud / laravel-forwarder
Laravel 扩展包,允许您从外部链接获取数据并返回到回调 URL
v1.0
2019-03-18 13:10 UTC
Requires
- php: >=7.1.0
- guzzlehttp/guzzle: ~6.0
This package is auto-updated.
Last update: 2024-09-20 02:23:53 UTC
README
Laravel Forwarder.
此包允许您将请求从您的项目转发到另一个链接。转发请求将携带所有原始信息。
此外,此包还允许您在代码内部获取响应,并在返回最终响应之前对其进行操作。
更多功能,您还可以在发送到远程链接之前修改请求。
安装
您可以通过 composer 安装此包
composer require digitalcloud/laravel-forwarder
在 Laravel 5.5 中,服务提供程序将自动注册。在框架的旧版本中,只需将服务提供程序添加到 config/app.php 文件中
'providers' => [ DigitalCloud\Forwarder\ForwarderServiceProvider::class, ];
安装后,您需要将中间件 "Forward" 注册到您的 kernel 中的 "routeMiddleware" 数组中
protected $routeMiddleware => [ .... 'forward' => \DigitalCloud\Forwarder\Http\Middleware\Forward::class ];
如何使用
现在您可以在路由文件中使用新的函数,如下所示
Route::forward(['post'], 'http://example.com', 'posts', 'PostController@index');
此路由函数将在后台向指定域名和路由发送请求
例如,上述示例将转发到 "http://example.com/posts" 的 POST 请求。
注意
如果您使用 api.php 路由文件,上述示例将转发到 "http://example.com/api/posts"
请求处理完毕后,包将把结果作为 "response" 属性传递给函数 'PostController@index',您可以对结果进行处理、更新并返回结果
public function index(Request $request) { $result = $request->response; return $result; }
请求前
您需要在发送请求之前更新请求吗?这非常简单,只需在同一个控制器中创建一个以 "before" 为前缀的函数即可
例如,如果您的控制器中的函数名为 "index",则必须创建另一个名为 "beforeIndex" 的函数,并且包将处理其余部分
注意
请注意,任何 "before" 函数都应该返回 "Request" 对象,以便将其传递给剩余的链。
public function beforeIndex(Request $request) { // make your request manipulations here $request = $request->merge(['token' => 'token', 'secret' => 'xxx']); // then return the final request return $request; }