首页 > 解决方案 > Springboot 通过过滤器获取动态 JSON 内容

问题描述

我的 Springboot 驱动的网络应用程序中有 json 数据资产,如下所示

webapp/asset/labels.json

webapp/asset/dept1/labels.json

webapp/asset/dept2/labels.json

在 UI 层,发生 REST 调用以获取标签 ( http://server/asset/labels.json )。现在我想动态地获取被 /dept1/labels.json 覆盖的标签 json 的内容——如果这个人属于 dept1,用 /dept2/labels.json——如果这个人属于 dept2。

标签.json

{"Foo" : "1","Bar" : "X"}

dept1/labels.json

{"Foo" : "2"}

dept2/labels.json

{"Bar" : "Y"}

调用 /asset/labels.json 时前端期望的预期 Json 内容

对于不属于 Dept1 或 Dept2 的员工

{"Foo" : "1","Bar" : "X"}

对于属于 Dept1 的员工

{"Foo" : "2","Bar" : "X"}

对于属于 Dept2 的员工

{"Foo" : "1","Bar" : "Y"}

我尝试了各种方法,但在大多数情况下,我最终为每个 API 定制了实现。我有数百个 json 需要处理,所以我想知道是否有办法提出一个可以处理所有 JSON 文件的自定义框架/实用程序。

标签: spring-bootservlet-filters

解决方案


您将拥有一个返回正确 JSON 的 API 端点。

在 API 端点方法中,您将遵循以下步骤:

  • 首先将基础 JSON 文件加载到MapsaybaseMap中。
  • 接下来根据用户的部门,您将部门特定的 JSON 加载到另一个地图中说deptMap
  • 然后你运行这行代码:baseMap.putAll(deptMap)

putAll将覆盖来自部门特定 JSON 的任何键。

注意

将只有一个端点,该端点将根据作为查询参数传递给它的员工姓名或根据登录用户获取它来确定 Employee


推荐阅读