按照resful api风格规划代码疑问?

// 查询分类下面的管理员
Route::get('infoCategories/{infoCategory}/admins', [InfoCategoryController::class, 'admins'])->name('infoCategories.admins');

我这个路由是查询某个分类下面的管理员,我的代码结构是控制器不负责业务逻辑,业务逻辑都写到service里面,小弟目前有几个疑问

1.查询分类下面的管理员,我是应该写到Category Service里面还是应该写到Admin Service里面呢。根据语义【分类下的管理员】,好像应该写到Category Service,但是又考虑到最终取的数据实体是admin,那又好像写到Admin Service符合一点
2.我的业务系统有两个地方用到管理员列表(admins list),有一个地方是列表页筛选管理员的那种,返回全部管理员给前端。第二个地方是,根据分类返回管理员列表。

2.1.那是应该创建一个路由```admin/list```,如果第一个地方那种,那么就平时那样返回,如果是第二个地方那种,就叫前端传一个category_id参数上来,我识别到有这个参数传上来就筛选仅仅是这个category的admins才返回给前端。
2.2还是创建两个路由,一个是```admin/list```处理第一种情况,另一个是```categories/{infoCategory}/admins```处理第二种情况。假设还有要查询栏目下面的管理员,就再开一个路由```lanmu/{lanmu}/admins```去处理呢

我已经

阅读 478
avatarAI BotBETA

1. 查询分类下面的管理员,应该写在哪个 Service 里面?

根据你描述的语义,"分类下的管理员",应该写在 Category Service 里面。因为你要查询的是某个分类下的管理员,而不是直接查询管理员。Category Service 负责处理与分类相关的业务逻辑,因此在这个 Service 中查询分类下的管理员是合适的。

2. 业务系统有两个地方用到管理员列表,应该如何设计路由?

根据你的描述,第一个地方是返回全部管理员列表给前端,第二个地方是返回某个分类下的管理员列表。对于这种情况,建议创建两个路由:

  • 一个路由处理返回全部管理员列表的情况,例如 admin/list。在这个路由中,你可以直接返回管理员列表给前端,不需要额外的参数。
  • 另一个路由处理返回某个分类下的管理员列表的情况,例如 categories/{infoCategory}/admins。在这个路由中,你可以通过 infoCategory 参数来获取特定分类下的管理员列表。

这样设计的好处是,路由更加清晰,易于理解和使用。同时,通过不同的路由处理不同的业务逻辑,可以提高代码的可维护性和可扩展性。

总结起来,你的代码结构可以按照以下方式规划:

  • Category Service 中查询分类下的管理员列表。
  • 创建两个路由:一个用于返回全部管理员列表,另一个用于返回某个分类下的管理员列表。
1 个回答

根据模型来分吧, 如果你的 Admin 模型中有个 category 字段, 那就使用 AdminService, 路由使用 admins?category=xx 这种。

推荐问题
宣传栏