【问题标题】:Two controllers: API and View?两个控制器:API 和 View?
【发布时间】:2017-02-17 07:04:33
【问题描述】:

我知道一切都可以根据我的需要进行更改,但是我想知道您在项目中做了什么。

你如何在 Laravel 中组织你的路线?我喜欢做 Route::resource 但我认为它混合了 API 路由和视图路由。

我通常做两个控制器:

TicketsAPIController (json response)

index
store
show
update
destroy

TicketsViewController (view response)

index
create
show
edit

你是做什么的?

【问题讨论】:

    标签: api laravel view controller


    【解决方案1】:

    试着像这样定义你的路线

    Route::controllers([
     'api' => 'TicketsAPIController ',
     'view' => 'TicketsViewController'
    ]);
    

    你的控制器方法

    /api
    public function getIndex()
    {  
    }
    
    public function store(Request $request)
    {
    }
    

    【讨论】:

    【解决方案2】:

    Laravel 5.3 已经实现了这个功能,如果你在 laravel 网站上阅读 laravel 5.3 的更新日志,你会注意到 routes.php 不再存在,而是位于项目根目录中名为 routes/ 的文件夹中,并且在里面其中你可以找到两个名为web.phpapi.php 的文件,如果你深入观察你会发现RouteServiceProvider.php 中的每个文件都有自己的uri,默认情况下web.php 内部定义的路由将位于根目录(/),API 路由将在 /api 前缀下。最好的!

    【讨论】:

    • 是的,我知道。但是您创建了多少个控制器?你在 web.php 和 api.php 中做 Route::resource 吗?
    • 好吧,你可以创建两个不同的命名空间,或者通过 headers 处理请求并返回关于你发出的请求类型的响应,比如XmlHttpRequest,例如,你可以放一个 header AJAX-REQUEST 和值 true 在您的请求中,如果您使用 Javascript 实现此目标,并在操作中对此进行评估,那么您甚至不需要定义两个控制器,只需一个条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2014-06-01
    • 1970-01-01
    • 2023-03-09
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多