如何从我的 RESTANGULAR HTTP 请求中删除这些自定义查询参数



我正在尝试从 REST API 上的以下 HTTP 请求中删除自定义参数:

我想转身http://localhost:3000/users?_page=1&_perPage=30&_sortDir=DESC&_sortField=id

成 http://localhost:3000/users

我正在使用ng-admin,这是一个AngularJS管理面板,他们在此处提供了一个有关更改查询参数的页面:https://github.com/marmelab/ng-admin/blob/master/doc/API-mapping.md

我已经使用了他们的一些代码,并尝试使用以下代码来实现我正在尝试做的事情,但它不起作用。

myApp.config(['RestangularProvider', function(RestangularProvider) {
RestangularProvider.addFullRequestInterceptor(function(element, operation, what, url, headers, params, httpConfig) {
    if (operation == 'getList' && what == 'entityName') {
        delete params._page;
        delete params._perPage;
        delete params._sortField; 
        delete params._sortDir; 
    }
    console.log({ params: params });
});
}]);

最后,使用拦截器后,我如何检查发送的实际HTTP请求,chrome开发人员工具似乎只显示带有所有参数的原始请求,即使我已经实现了上述方法。我认为这是因为拦截器在浏览器实现请求后工作。

您应该从拦截器返回整个请求,否则不会对请求进行任何更改。它写在文件上。

addFullRequestInterceptor

addFullRequestInterceptor

这将添加新的 fullRequestInterceptor。fullRequestInterceptor 是 类似于requestInterceptor,但功能更强大。它让你 同时更改元素、请求参数和标头。

这是一个接收与请求拦截器相同的函数 plus 标头和查询参数(按该顺序)。

它可以返回具有以下任何(或所有)属性的对象:

标头:要发送

的标头 参数:要发送的请求参数 元素:要发送的元素 httpConfig:要用来调用的 httpConfig 如果未返回属性,则使用发送的属性。

在最后一行它说 如果未返回属性,则使用发送的属性。 因此,如果您在对象中发送更改的属性,那么您应该没问题...

myApp.config(['RestangularProvider', function(RestangularProvider) {
RestangularProvider.addFullRequestInterceptor(function(element, operation, what, url, headers, params, httpConfig) {
    if (operation == 'getList' && what == 'entityName') {
        delete params._page;
        delete params._perPage;
        delete params._sortField; 
        delete params._sortDir; 
    }
    console.log({ params: params });
    // return changed properties which is params in this case
    return { params: params };

});
}]);

最新更新