【问题标题】:Laravel 5.5 Rest ApiLaravel 5.5 休息 API
【发布时间】:2018-06-10 06:46:30
【问题描述】:

我正在创建一个支持移动应用和普通刀片的 Laravel 应用程序。 我的大问题是如何区分返回视图和返回 json 关于如何组织代码有很多意见我想知道什么是我的案例的最佳实践。

1- 为网络创建不同的控制器 1 其他为移动设备(杀死 DRY 概念) 2-为移动返回json创建1个控制器并从网络控制器调用它的功能 3-创建服务类包含逻辑并创建2个控制器并在构造函数中注入一个对象EX:[Services/UserService.php][UserController.php][Api/UserController.php] 我应该走哪条路 提前致谢。

【问题讨论】:

    标签: laravel rest api


    【解决方案1】:

    您可以将代码逻辑保留在同一个控制器@方法中,并使用wantsJson 来确定 Accept 标头并构建适当的响应

    // build $responseData
    
    if (Request::wantsJson()) {
        return response()->json($responseData);
    }
    else {
        return view('view')->with($responseData);
    }
    

    【讨论】:

    • 这是一个很好的解决方法,但是使代码更复杂(想象一下,有些端点不会那么简单,可能在 api 响应和 web 响应之间存在一些差异。我更喜欢创建两个不同命名空间下的控制器:App\Http\Controllers\ApiApp\Http\Controllers\Web。您将拥有更多文件,但控制器方法更清晰。您也可以为请求创建此命名空间分隔
    • @EliasSoares 所以你的意思是重写两个控制器中的所有代码?还是在外部类中操作逻辑并在两者中使用?
    猜你喜欢
    • 2018-04-12
    • 2019-04-02
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2019-02-15
    • 2018-09-13
    • 2014-07-27
    • 2014-11-09
    相关资源
    最近更新 更多