java - restful 资源关联关系API设计

 米年爱秋天 发布于 2022-11-04 08:53

比如公司与权限,公司下的员工与权限的关系

/orgs/:orgId/privileges

/orgs/:orgId/employees/:employeeId/privileges

采用 spring mvc 放在 OrgController

不知道这样对不对?

2 个回答
  • @ReqeustMapping("/org")
    class OrgController
    
    @ResponseBody
    @ReqeustMapping("/{orgId}/privileges")
    public List<Privilege> privileges(@PathVariable String orgId)
    
    @ReqeustMapping("/employee")
    class EmployeeController
    
    @ResponseBody
    @ReqeustMapping("/{employeeId}/privileges")
    public List<Privilege> privileges(@PathVariable String employeeId)
    

    当题主同学问到某公司下某个员工的权限的时候,我就感觉上面这些都没什么必要了。

    先把enable-matrix-variables设为true

    <mvc:annotation-driven enable-matrix-variables="true" />
    



    不用那么多方法来提供privilege,只要一个方法:

    @RequestMapping(value = "/privileges/{orgId}", method = RequestMethod.GET)
    @ResponseBody
    public List<Privilege> privileges(
             @PathVariable String orgId
            , @MatrixVariable(required = false) String userId) {
        List<Privilege> privileges = new ArrayList<>();
    
        //something
    
        return privileges;
    }
    

    Url可以是:/privileges/8866
    或者 /privileges/8866;userId=0001

    2022-11-07 14:34 回答
  • 链有点长,如果org相关的都要放到这个controller中就是导致这个文件越来越复杂

    个人感觉这样会更好一点

    // OrgController
    /orgs/:orgId
    
    // EmployeesController
    /orgs/:orgId/employees 
    
    // EmployeesController
    /employees/:employeeId
    
    // PrivilegesController
    /employees/:employeeId/privileges
    
    // PrivilegesController
    /orgs/:orgId/privileges
    
    2022-11-07 14:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有