比如公司与权限,公司下的员工与权限的关系
/orgs/:orgId/privileges /orgs/:orgId/employees/:employeeId/privileges
采用 spring mvc 放在 OrgController
不知道这样对不对?
@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
链有点长,如果org
相关的都要放到这个controller
中就是导致这个文件越来越复杂
个人感觉这样会更好一点
// OrgController /orgs/:orgId // EmployeesController /orgs/:orgId/employees // EmployeesController /employees/:employeeId // PrivilegesController /employees/:employeeId/privileges // PrivilegesController /orgs/:orgId/privileges