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

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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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年前 评论

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