* @ngdoc service * @kind function * @name $http * @requires ng.$httpBackend * @requires $cacheFactory * @requires $rootScope * @requires $q * @requires $injector * * @description * The `$http` service is a core Angular service that facilitates commun
(requestConfig)
| 10184 | </example> |
| 10185 | */ |
| 10186 | function $http(requestConfig) { |
| 10187 | |
| 10188 | if (!angular.isObject(requestConfig)) { |
| 10189 | throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig); |
| 10190 | } |
| 10191 | |
| 10192 | var config = extend({ |
| 10193 | method: 'get', |
| 10194 | transformRequest: defaults.transformRequest, |
| 10195 | transformResponse: defaults.transformResponse, |
| 10196 | paramSerializer: defaults.paramSerializer |
| 10197 | }, requestConfig); |
| 10198 | |
| 10199 | config.headers = mergeHeaders(requestConfig); |
| 10200 | config.method = uppercase(config.method); |
| 10201 | config.paramSerializer = isString(config.paramSerializer) ? |
| 10202 | $injector.get(config.paramSerializer) : config.paramSerializer; |
| 10203 | |
| 10204 | var serverRequest = function(config) { |
| 10205 | var headers = config.headers; |
| 10206 | var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest); |
| 10207 | |
| 10208 | // strip content-type if data is undefined |
| 10209 | if (isUndefined(reqData)) { |
| 10210 | forEach(headers, function(value, header) { |
| 10211 | if (lowercase(header) === 'content-type') { |
| 10212 | delete headers[header]; |
| 10213 | } |
| 10214 | }); |
| 10215 | } |
| 10216 | |
| 10217 | if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) { |
| 10218 | config.withCredentials = defaults.withCredentials; |
| 10219 | } |
| 10220 | |
| 10221 | // send request |
| 10222 | return sendReq(config, reqData).then(transformResponse, transformResponse); |
| 10223 | }; |
| 10224 | |
| 10225 | var chain = [serverRequest, undefined]; |
| 10226 | var promise = $q.when(config); |
| 10227 | |
| 10228 | // apply interceptors |
| 10229 | forEach(reversedInterceptors, function(interceptor) { |
| 10230 | if (interceptor.request || interceptor.requestError) { |
| 10231 | chain.unshift(interceptor.request, interceptor.requestError); |
| 10232 | } |
| 10233 | if (interceptor.response || interceptor.responseError) { |
| 10234 | chain.push(interceptor.response, interceptor.responseError); |
| 10235 | } |
| 10236 | }); |
| 10237 | |
| 10238 | while (chain.length) { |
| 10239 | var thenFn = chain.shift(); |
| 10240 | var rejectFn = chain.shift(); |
| 10241 | |
| 10242 | promise = promise.then(thenFn, rejectFn); |
| 10243 | } |
no test coverage detected