2017-08-24 89 views
0

我正在为应用程序创建API。现在,应用程序开发人员希望我创建一个固定的基本URL,并将ROUTE NAME(将指向控制器函数)作为POST变量传递。例如:Laravel基于查询字符串或发布变量的呼叫控制器

http://example.com/Api

和POST变量,如:

action=>'ROUTE_NAME' 

但laravel我们可以定义基于URL的部分作为路线:

http://example.com/Api/ROUTE_NAME

我已经尝试过使用单个控制器并根据SWITCH语句加载其他控制器。但这似乎并不是一种标准做法,因为每次创建新的API时都需要添加切换条件。中间件也不能动态地在加载的控制器上工作。 laravel有没有办法实现这一目标?我使用laravel 5.4

+0

在路由中使用前缀 –

+0

@GauravRai“Api”已经是一个前缀。我需要的是一个修复url,它是基于action参数的所有API和加载控制器的http://example.com/Api。 –

回答

0

你可以实现一个middleware/Api路线,从$request得到ROUTE_NAME上侦听,那么你可以使用Route()辅助函数来发现,命名的路由的URL,然后重定向请求到那条路线。

喜欢的东西:

// Generating ROUTE_NAME url... 
$url = route($request->route_name); 

// Redirect to that route... 
return redirect()->route($url); 

显然,你需要添加代码来处理,如果它没有找到一个途径,等等,也许返回一个JSON响应回来正确的错误代码等