默认情况下,$resource
服务会对它进行的 http 请求的 response 默认进行一些处理,它会尝试 map 返回值。
如果你的服务器端返回的值符合标准 json 格式,那么不会遇到问题,但是如果你的服务器返回了类似 12
或者 abc
这样子的数据时,你就会发现当你在回调中试图获取 response 时,发生了一些意想不到的事情。
你实际获得的结果可能是这样子的:
你得到的值已经是被错误的 map 过了。这当然不是我们想要的,因此,我们需要手动来处理一下。
所以,我们在 $resource
的对应 action
中指定一下 transformResponse
参数。
顾名思义,transformResponse
就是用来指定对 response
的处理方法的,它接受一个方法或者一个由多个方法组成的数组作为值。
因此我们给 $resource
的某个 action 下添加如下一个参数。
transformResponse:
最终的结构是这样子的:
'/api/test', , ;
这样我们就可以在对应的 action (这里是 save 方法) 的回调中取得我们想要的 response 了。
假设你在回调函数中使用 response 作为回调变量名,你可以通过 response.data
来获取真实的 response,它不会再被 angular 自动处理了。