I have tried the following command, using resource on Angular:
angular.module('appServices', ['ngResource']).factory('Example',
function($resource){
return $resource('http://api.example.com.br/teste', {}, {
query: {method:'GET', headers: {'Content-Type': 'application/json'}}
});
});
but the http content type is not being generated correctly, in this case "application/json".
I have seen similar questions like AngularJS resource not setting Content-Type ,but I have the lastest Angular version (1.0.6/1.1.4).
What is wrong with the code above?
Conclusion
Look at the angular source, line 8742 in the version 1.1.4:
// strip content-type if data is undefined
if (isUndefined(config.data)) {
delete reqHeaders['Content-Type'];
}
The Content-Type
header gets removed if the request does not contain any data (a request body).
I think this is the expected behaviour since GET
requests do not have a body.
A POST method in the other hand, will set the content-type as you expect, as long it has data in the request body. Try the following:
Change the method to POST
query: {method:'POST', headers: {'Content-Type': 'application/json'}}
And call your resource action with some parameter:
Example.query(yourData)
In this case the content type is correctly set.
Edit:
It seems it also works with get, in this case the data is in the second parameter:
Example.query(yourParams, yourData)
An example: http://jsfiddle.net/WkFHH/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With