【问题标题】:Laravel call controller based upon query string or post variables基于查询字符串或发布变量的 Laravel 调用控制器
【发布时间】:2018-02-02 07:47:55
【问题描述】:

我正在为应用创建 API。现在应用程序开发人员希望我创建一个固定的基本 url 并将 ROUTE NAME(它将指向控制器函数)作为 POST 变量传递。示例:

http://example.com/Api

和 POST 变量,例如:

action=>'ROUTE_NAME'

但在 laravel 中,我们可以根据 url 部分定义路由:

http://example.com/Api/ROUTE_NAME

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

【问题讨论】:

  • 在路由中使用前缀
  • @GauravRai "Api" 已经是一个前缀。我需要的是一个修复 url,它是 example.com/Api,用于所有 API 和基于操作参数的加载控制器。

标签: php laravel


【解决方案1】:

您可以实现一个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 响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多