admin-on-rest:如何将 <Resource /> 组件与自定义 API 端点一起使用
admin-on-rest: How use <Resource /> component with custom API end points
我正在使用 Loopback REST Client 为 admin-on-rest 成功使用,没有任何问题。它易于使用并且非常适用于标准的 CRUD 操作,但是我很快发现自己需要使用非常规的 REST 调用,如下所示:
http://www.remoteurl.com/api/getUsersWithRolesInfo
我还想在某些情况下使用 Loopback 的 in-URL 过滤器,例如:
http://www.remoteurl.com/api/Users?filter=[include][profile]&filter=[include][posts]
如何使用 <Resource />
组件实现此目的?
最初我想到修改REST客户端以映射上述端点。然而,REST 客户端将其调用映射到 GET_ONE
、GET_MANY
等类型。而我想要映射的是 URL(如 ../getUserWithRolesInfo
)。
感谢您的帮助。
您可以使用 List 组件传递永久过滤器,也可以使用 ReferenceInput 组件传递一次性过滤器。对于对 API 调用的更具体修改,您可以使用 RestWrapper 拦截对 API 的一些调用并将其余调用传递给 Loopback Rest Client。
环回 REST 客户端不考虑包含过滤器。您将必须手动构建 URL 查询。像下面这样的东西。其中大部分来自 AOR-Loopback 代码,下面使用的 queryParameters 函数也是如此。您可以在那里找到所有内容并根据需要进行修改。
function getListQueryConstructor(params, apiResource) {
const page = params.pagination.page
const perPage = params.pagination.perPage
const {field, order} = params.sort
const query = {}
if (params.filter.include) {
query['include'] = params.filter.include
delete params.filter.include
}
query['where'] = {...params.filter}
if (field) {query['order'] = [field + ' ' + order]}
if (perPage > 0) {
query['limit'] = perPage;
if (page >= 0) {
query['skip'] = (page - 1) * perPage
}
}
return (config.host + '/' + apiResource + '?' + queryParameters({filter: JSON.stringify(query)}))
}
我正在使用 Loopback REST Client 为 admin-on-rest 成功使用,没有任何问题。它易于使用并且非常适用于标准的 CRUD 操作,但是我很快发现自己需要使用非常规的 REST 调用,如下所示:
http://www.remoteurl.com/api/getUsersWithRolesInfo
我还想在某些情况下使用 Loopback 的 in-URL 过滤器,例如:
http://www.remoteurl.com/api/Users?filter=[include][profile]&filter=[include][posts]
如何使用 <Resource />
组件实现此目的?
最初我想到修改REST客户端以映射上述端点。然而,REST 客户端将其调用映射到 GET_ONE
、GET_MANY
等类型。而我想要映射的是 URL(如 ../getUserWithRolesInfo
)。
感谢您的帮助。
您可以使用 List 组件传递永久过滤器,也可以使用 ReferenceInput 组件传递一次性过滤器。对于对 API 调用的更具体修改,您可以使用 RestWrapper 拦截对 API 的一些调用并将其余调用传递给 Loopback Rest Client。
环回 REST 客户端不考虑包含过滤器。您将必须手动构建 URL 查询。像下面这样的东西。其中大部分来自 AOR-Loopback 代码,下面使用的 queryParameters 函数也是如此。您可以在那里找到所有内容并根据需要进行修改。
function getListQueryConstructor(params, apiResource) {
const page = params.pagination.page
const perPage = params.pagination.perPage
const {field, order} = params.sort
const query = {}
if (params.filter.include) {
query['include'] = params.filter.include
delete params.filter.include
}
query['where'] = {...params.filter}
if (field) {query['order'] = [field + ' ' + order]}
if (perPage > 0) {
query['limit'] = perPage;
if (page >= 0) {
query['skip'] = (page - 1) * perPage
}
}
return (config.host + '/' + apiResource + '?' + queryParameters({filter: JSON.stringify(query)}))
}