【发布时间】:2017-08-13 19:10:45
【问题描述】:
我希望在我的 API 中对我的 API 的其他部分执行子请求。我以前在 Symfony 中做过这个 - 但我不确定如何在 Laravel 中实现这个。
$url = route('some.route', ['param' => $val]);
$request = Request::create($url, 'get', []);
Route::dispatch($request);
似乎总是无法提供类似
的东西Class api does not exist
所以我试过了
app()->handle($request);
这可行,但会处理请求,但我无法处理引发的任何异常(例如,应用层处理它并引发 html 响应时的验证)
Handle 具有 HttpKernelInterface 的签名,因此可以获取子请求的属性并捕获异常 - 但这些不被使用....
...->handle($request, HttpKernelInterface::SUB_REQUEST, false);
是否可以在 Laravel 中执行此操作而无需发送实际的 http 请求?
谢谢
【问题讨论】:
-
它看起来像糟糕的设计。如果你一直在实现这个,你应该看看 GraphQL。另一种方法是将逻辑从控制器转移到专用类(看看服务模式)。它将使您能够在不处理其他伪请求的情况下调用某些逻辑。
标签: php laravel laravel-5 routing request