java - restful 资源关联关系API设计
PHP中文网
PHP中文网 2017-04-17 13:06:59
[Java讨论组]

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

/orgs/:orgId/privileges

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

采用 spring mvc 放在 OrgController

不知道这样对不对?

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
PHPz

链有点长,如果org相关的都要放到这个controller中就是导致这个文件越来越复杂

个人感觉这样会更好一点

// OrgController
/orgs/:orgId

// EmployeesController
/orgs/:orgId/employees 

// EmployeesController
/employees/:employeeId

// PrivilegesController
/employees/:employeeId/privileges

// PrivilegesController
/orgs/:orgId/privileges
天蓬老师
@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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号