Admin on rest 如何在rest上为admin中的资源设置动态URL?

Admin on rest 如何在rest上为admin中的资源设置动态URL?,admin-on-rest,Admin On Rest,我有一个要求,根据登录用户的类型访问以下资源 R1:/mit/oss/12345/peers R2:/mit/md/6879/ngrp R1应由id为12345的用户访问。R2应该可以被id为-6879的用户访问 问题是-如何根据记录资源URL的用户使用动态值(如URL中的userId)定义资源URL。我知道aor权限库可以根据用户权限切换菜单,但是否可以使用URL中的ID动态定义资源本身?您可以在rest客户端上编写一个包装器,用于拦截调用并动态生成URL 基本上装饰rest客户端,就像这里的

我有一个要求,根据登录用户的类型访问以下资源

R1:
/mit/oss/12345/peers

R2:
/mit/md/6879/ngrp

R1应由id为12345的用户访问。R2应该可以被id为-6879的用户访问


问题是-如何根据记录资源URL的用户使用动态值(如URL中的userId)定义资源URL。我知道aor权限库可以根据用户权限切换菜单,但是否可以使用URL中的ID动态定义资源本身?

您可以在rest客户端上编写一个包装器,用于拦截调用并动态生成URL

基本上装饰rest客户端,就像这里的文档一样-->

然后,您可以检查以下psuedocode中的情况

if (type === 'AOR_REST_TYPE' && resource === 'BASE_RESOURCE') {
    if (getUserFromLocalStorage === usr1) {
       url = url1
    } else {
       url = url2
    }
    options.method = 'GET';
    // other options       
    }

下面是一个使用映射重新映射资源URL的简单示例

import {simpleRestClient} from 'admin-on-rest';

// Update the remap table appropriately to map from a resource name to a different path
const remap = {
    "resource1" : "resource1Remapped",
    "releasepresets" : "productionintents/releasepresets"
}

const simpleRestClientWithResourceUrlRemap = (apiUrl) => {

    var client = simpleRestClient(apiUrl);

    return (type, resource, params) => {

        if (remap[resource]) {
            console.log('remapping resource from ' + resource + ' to ' + remap[resource]);
            resource = remap[resource];
        }
        return client(type, resource, params);
  }

}

export default (simpleRestClientWithResourceUrlRemap);
可以使用带有逻辑的函数,而不是简单的重新映射