gpt4 book ai didi

http-headers - Restangular:如何获取 HTTP 响应 header ?

转载 作者:行者123 更新时间:2023-12-01 08:26:44 25 4
gpt4 key购买 nike

我有一个 REST 服务器,它返回一个 Link HTTP header 以及对 PUT 的响应,以指示新创建实体的 URL:

Link:<entities/6>; rel="created"

是否有可能使用 Restangular 读取该链接标题?

到目前为止,我遇到的使用 Restangular 拦截 HTTP 请求的唯一方法是在应用程序配置中注册一个响应拦截器:
restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
console.log(response.headers())
return response.data;
});

然而,有了上面的演示实现,唯一被记录的 HTTP header 是 content-type 。尽管如此,我仍然可以在浏览器开发工具栏中看到响应确实带有许多额外的 HTTP 响应 header ,例如 ServerDate 和前面提到的 Link

为什么我无法通过 addResponseInterceptor() 访问完整的 HTTP 响应 header 数组? 有没有办法使用 Restangular 捕获有问题的 HTTP 响应 header ?

注意:我不会使用 HAL 或任何其他特殊响应正文格式来搜索答案。我想知道我是否可以使用带有 Retangular 的普通 HTTP header (如果不能,我可能会求助于 HAL 或其他东西)。

最佳答案

您不需要 ResponseInterceptor 来执行此操作。每次执行任何请求时,您只需将 fullResponse 设置为 true 即可获取整个响应(包括 http header )。

Restangular.setFullResponse(true);

您可以在应用程序配置中全局设置它。像这样的东西:
angular.module('YourApp')
.config(['RestangularProvider',
function (RestangularProvider) {
RestangularProvider.setFullResponse(true);
...

然后,每次收到响应时,您都可以访问所有响应 header 。
Restangular.all('users').getList().then(function(response) {
$scope.users = response.data;
console.log(response.headers);
}

例子:
response.headers('Link')

注意:要小心,因为使用 fullResponse,响应数据位于 response.data 中,而不是直接在响应中。

编辑 :正如@STEVER 指出的那样,您还需要在服务器 API 中添加 expose the headers
例子:
Access-Control-Expose-Headers: Link

您可以在 Restangular documentation 中获得更详细的信息

希望能帮助到你。

关于http-headers - Restangular:如何获取 HTTP 响应 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32762129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com