我正在使用Loopback REST Client成功完成admin-on-rest而没有任何问题。它易于使用,并且非常适用于标准CRUD操作,但是我很快发现自己需要使用非传统的REST调用,如下所示:
http://www.remoteurl.com/api/getUsersWithRolesInfo
我还想在某些情况下使用Loopback的URL内过滤器,例如:
http://www.remoteurl.com/api/Users?filter=[include][profile]&filter=[include][posts]
如何使用<Resource />
组件实现此目的?
最初我想过修改REST客户端以映射上述端点。但是,REST客户端将其调用映射到GET_ONE
,GET_MANY
等类型。而我想要映射的是URL(如../getUserWithRolesInfo
)。
感谢您的帮助。
答案 0 :(得分:0)
您可以使用List组件传递永久过滤器,也可以使用ReferenceInput组件传递一次性过滤器。对于对API调用的更具体修改,您可以使用RestWrapper拦截对API的一些调用,并将其余调用传递给Loopback Rest Client。
Loopback REST客户端不考虑包含过滤器。您必须手动构建URL查询。像下面的东西。其中大部分来自AOR-Loopback Code,以及下面使用的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)}))
}