Spu*_*ick 3 http-headers restangular
我有一个REST服务器,它返回一个Link带有对PUT的响应的HTTP头,以指示新创建的实体的URL:
Link:<entities/6>; rel="created"
Run Code Online (Sandbox Code Playgroud)
有没有可能用Restangular读取该链接头?
到目前为止我唯一能够使用Restangular拦截HTTP请求的工具是在app config中注册响应拦截器:
restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
console.log(response.headers())
return response.data;
});
Run Code Online (Sandbox Code Playgroud)
但是,通过上面的演示实现,记录的唯一HTTP头是content-type.不过,我可以在一个响应来确实增加了不少额外的HTTP响应头,比如浏览器工具栏的发展看Server,Date和前述Link.
为什么我无法访问完整的HTTP响应头数组addResponseInterceptor()?有没有办法使用Restangular捕获有问题的HTTP响应头?
注意:我不使用HAL或任何其他特殊响应正文格式搜索答案.我想知道我是否可以使用带有Restangular的普通HTTP头(如果没有,我可能会使用HAL或其他东西).
tro*_*oig 10
你不需ResponseInterceptor要这样做.每次执行任何请求时,您只需设置fullResponse为true获取整个响应(包括http标头).
Restangular.setFullResponse(true);
Run Code Online (Sandbox Code Playgroud)
您可以在应用配置中全局设置它.像这样的东西:
angular.module('YourApp')
.config(['RestangularProvider',
function (RestangularProvider) {
RestangularProvider.setFullResponse(true);
...
Run Code Online (Sandbox Code Playgroud)
然后,每次收到响应时,您都可以访问所有响应标头.
Restangular.all('users').getList().then(function(response) {
$scope.users = response.data;
console.log(response.headers);
}
Run Code Online (Sandbox Code Playgroud)
例:
response.headers('Link')
Run Code Online (Sandbox Code Playgroud)
注意:请注意,因为使用fullResponse,响应数据位于response.data中,而不是直接响应.
编辑:作为@STEVER点,您还需要在服务器API中公开标头.例:
Access-Control-Expose-Headers: Link
Run Code Online (Sandbox Code Playgroud)
您可以在Restangular文档中获取更多详细信息
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
5606 次 |
| 最近记录: |