API 和网站用一套代码的问题

请问如果既要开发API又要有网站,是不是应该把所有的controller里的业务逻辑都提取成service?

第六本教程 电商进阶 里面的课程结束之后只有4个service,
file
是不是应该把productsController的index方法 show方法都提取到一个service里面?然后每个方法最后的return都使用respons()->json();??

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
leo
最佳答案

不一定,网站和 API 有可能需要的数据、筛选的方式完全不同,抽取成 Service 不一定能提高多少复用度,反倒可能提高系统的复杂度,主要还是看具体的业务需求。

大多数情况下不需要 respons()->json(),Laravel 会自动处理。

5年前 评论
讨论数量: 4
leo

不一定,网站和 API 有可能需要的数据、筛选的方式完全不同,抽取成 Service 不一定能提高多少复用度,反倒可能提高系统的复杂度,主要还是看具体的业务需求。

大多数情况下不需要 respons()->json(),Laravel 会自动处理。

5年前 评论

@leo 自动处理是指:

    return view('products.index', [
        'products' => $pager,
        'filters'  => [
            'search' => $search,
            'order'  => $order,
        ],
        'category' => $category ?? null,
        'properties' => $properties,
        'propertyFilters' => $propertyFilters,
    ]);

这样的return模式可以只返回json数据吗?
怎么实现?~

5年前 评论
leo

@jingzhognwa 不是的,如果是正经的 API 的话,是不会和 Web 站点共用一个控制器的,因为 Web 页面的控制器还有 Session 等 API 不需要的东西。

5年前 评论

@leo 明白了,要根据实际情况。
多谢指点:)

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!