transformResponse
is executed on $http
level.
When you customise $resource actions with custom config object, that object is actually passed on to the underlying $http
service. So if you specify a transformResponse
callback, it will be executed on $http
level, and the results of your transformation will be passed back on to $resource.
$resource service will instantiate new object from your response data (which is already transformed by the transformResponse
callback) and this new object will be an instance of the $resource itself.
So, your car
object will be an instance of the Car
, but only for a moment, until it's properties are copied into a new $resource
object.
Here's a simplistic view of the process:
- $resource service initiates request
- $http service sends request and receives the response
- $http service transforms the response (response is now instance of
Car
) - $resource service receives the transformed response (from $http)
- $resource service makes an instance of itself using transformed response properties (result is now instance of $resource)
Anyway, I don't recommend decorating or extending the $resource service, because it's simpler to write your own implementation using $http service.