【发布时间】:2017-04-12 07:01:57
【问题描述】:
我正在 Laravel 5.3 中构建一个 API。在我的routes/api.php 文件中,我有 3 个端点:
Route::post('/notify/v1/notifications', 'Api\Notify\v1\NotifyApiController@notificationsPost');
Route::post('/notify/v1/alerts', 'Api\Notify\v1\NotifyApiController@alertsPost');
Route::post('/notify/v1/incidents', 'Api\Notify\v1\NotifyApiController@incidentsPost');
一些服务会直接调用这些路由,但是,当一些服务有请求时,需要处理输入数据才能到达这些端点。
例如,如果一个请求来自 JIRA,我需要在输入到达这些端点之前对其进行处理。
我认为最简单的方法是使用如下所示的第四个端点:
Route::post('/notify/v1/jira', 'Api\Notify\v1\JiraFormatter@formatJiraPost');
想法是点击/notify/v1/jira 端点,让formatJiraPost 方法处理输入,然后根据需要将请求转发到/notify/v1/notifications (/alerts, /incidents)。
如何让/notify/v1/jira 端点将请求转发到/notify/v1/notifications 端点?
您有没有更好的方法来做到这一点?
【问题讨论】:
-
您可以使用中间件来格式化您的请求数据,然后将其转发到同一个端点,而无需第四个。
-
同意@TheFallen。使用中间件检查“预处理要求”可能是您更好的选择。虽然,要考虑的一件事是将所有 3 个端点包装在一个中间件中可能会增加一些执行时间开销。由于“检查所有请求”以查看它们是否需要预处理。
标签: php laravel redirect laravel-5 routes