我在哪里设置responseType?

时间:2017-09-08 21:31:19

标签: angularjs

如果以下内容返回了一个arraybuffer,我将在哪里设置responseType?

var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function(user, getResponseHeaders){
  user.abc = true;
  user.$save(function(user, putResponseHeaders) {
    //user => saved user object
    //putResponseHeaders => $http header getter
  });
});

我尝试过:

var headers = {responseType: 'arraybufer'}

User.get(({userId:123},function(user,headers){...

但是当我在console.log(标题)时,它表示未定义

1 个答案:

答案 0 :(得分:-1)

isArray - {boolean =} - 如果为true,则此操作的返回对象为数组,请参阅返回部分。

transformResponse - {function(data,headersGetter)| Array。} - 转换函数或此类函数的数组。 transform函数接受http响应主体和头部并返回其转换(通常是反序列化)版本。默认情况下,transformResponse将包含一个函数,该函数检查响应是否类似于JSON字符串,并使用angular.fromJson对其进行反序列化。要防止此行为,请将transformResponse设置为空数组:transformResponse:[]

https://code.angularjs.org/1.4.7/docs/api/ngResource/service/ $资源

angular.module('itemServices', ['ngResource'])
  .factory('Item', ['$resource',
    function ($resource) {
      return $resource('items/:id',
        {id: '@id'},
        {
          query: {
            isArray: true,
            method: 'GET',
            params: {},
            transformResponse: function (data) {
              return angular.fromJson(data).body.rows
            }
          },
          get: {method: 'GET', params: {id: '@id'}},
          save: {method: 'POST'},
          update: {method: 'PUT', params: {id: '@id'}},
          delete: { method: 'DELETE', params: {} }
        });
    }]);