restful 风格 api 的一些疑问

给用户分配角色有如下两个设计

  1. POST /api/v1/user/assign-roles

    {
      userID: 1,
      roleIDs: [1,2,3]
    }
  2. /api/v1/user/:id/roles

    {
       roleIDs:[1,2,3]
    }

    我喜欢第一种方式,原因有两个

    1. 参数全部在一起,后端一个结构体直接全部接收
    2. 后端的方法只需要一个入参参数,如下
      func (i *RoleService) AssignRoleToUser(req *AssignRoleToUser) error {
      ...
      }

第二种则需要两个参数,我不喜欢这种,不喜欢的原因如下(但是 GPT,豆包回答都推荐这种方式)

  1. 接收参数需要多一行代码去接收id,然后再接收参数
  2. 方法入参变成了两个
  3. 方法名称意义模糊
    func (i *RoleService) AssignRoleToUser(userID uint, req *AssignRoleToUser) error {
     ....
    }

大家觉得哪一种更好,为什么?如果都不好,那么更好的应该是什么样子的?

九九一十八,一步一个脚印
讨论数量: 2

第二种更符合rest,第一种就是古早的逻辑

4个月前 评论

实际工作中第二种偏多。看上去要多做一次获取值的逻辑,但其实工作中的项目基本在路由注册层面对id就有了定义,做好了处理,内部处理逻辑可以直接取

4个月前 评论

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