oData,Yii2和动态对象

时间:2017-09-27 13:53:07

标签: rest yii2 odata api-design

我们有一个基于动态对象的系统 - 因此有一个描述这些对象的元数据表。例如 - 组织A可以具有仓库对象,客户对象和销售对象。组织B可以有一个销售对象和一个小丑对象。

用户对基于Yii2框架构建的rest api进行身份验证。他们使用/ user / authenticate调用进行身份验证,然后使用/ object / for list / create和/ object //查询,更新,删除对象。

这个问题是:如果开发人员要集成到服务中,他们需要知道组织中已定义的所有对象,包括他们能够读/写的可用字段。我们想要做的是提供一个描述我们数据的选项。

E.g。我最初的想法是暴露诸如/ object / metadata之类的东西,其中我将使用允许用户访问的json资源列表进行响应,例如仓库用户可以看到仓库,客户,销售。组织B用户会看到销售,小丑。

我被要求查看oData作为此规范,但oData似乎定义了一个完整的事物约定(url,搜索和过滤等)。

实现oData Spec的一部分或将其用作指南并使我们的URL保持一致是否有意义? 是否有oData规范的一部分可以用于描述动态资源(例如,如果用户使用我们的系统向Sales对象添加列 - api应该反映出来。)

对于如何设计/继续此要求的任何想法表示感谢。

谢谢!

1 个答案:

答案 0 :(得分:0)

我创建了以下解决方案:

  • 扩展dektrium / yii2-rbac,在哪里分配添加列公司
  • 在每个模块中(werhause,发票,...)创建了角色对象
  • roles对象有方法:canAssign(),canView(),canRemove()用户administartion
  • 用户管理面板收集所有模块中的所有角色(扫描为文件)并按模块分组显示。

此解决方案允许用户在公司之间切换,并允许用户为不同公司分配不同的访问权限,并控制用户管理员权限分配权限enter image description here