* @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)
| 9371 | </example> |
| 9372 | */ |
| 9373 | function $http(requestConfig) { |
| 9374 | |
| 9375 | if (!angular.isObject(requestConfig)) { |
| 9376 | throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig); |
| 9377 | } |
| 9378 | |
| 9379 | var config = extend({ |
| 9380 | method: 'get', |
| 9381 | transformRequest: defaults.transformRequest, |
| 9382 | transformResponse: defaults.transformResponse |
| 9383 | }, requestConfig); |
| 9384 | |
| 9385 | config.headers = mergeHeaders(requestConfig); |
| 9386 | config.method = uppercase(config.method); |
| 9387 | |
| 9388 | var serverRequest = function(config) { |
| 9389 | var headers = config.headers; |
| 9390 | var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest); |
| 9391 | |
| 9392 | // strip content-type if data is undefined |
| 9393 | if (isUndefined(reqData)) { |
| 9394 | forEach(headers, function(value, header) { |
| 9395 | if (lowercase(header) === 'content-type') { |
| 9396 | delete headers[header]; |
| 9397 | } |
| 9398 | }); |
| 9399 | } |
| 9400 | |
| 9401 | if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) { |
| 9402 | config.withCredentials = defaults.withCredentials; |
| 9403 | } |
| 9404 | |
| 9405 | // send request |
| 9406 | return sendReq(config, reqData).then(transformResponse, transformResponse); |
| 9407 | }; |
| 9408 | |
| 9409 | var chain = [serverRequest, undefined]; |
| 9410 | var promise = $q.when(config); |
| 9411 | |
| 9412 | // apply interceptors |
| 9413 | forEach(reversedInterceptors, function(interceptor) { |
| 9414 | if (interceptor.request || interceptor.requestError) { |
| 9415 | chain.unshift(interceptor.request, interceptor.requestError); |
| 9416 | } |
| 9417 | if (interceptor.response || interceptor.responseError) { |
| 9418 | chain.push(interceptor.response, interceptor.responseError); |
| 9419 | } |
| 9420 | }); |
| 9421 | |
| 9422 | while (chain.length) { |
| 9423 | var thenFn = chain.shift(); |
| 9424 | var rejectFn = chain.shift(); |
| 9425 | |
| 9426 | promise = promise.then(thenFn, rejectFn); |
| 9427 | } |
| 9428 | |
| 9429 | promise.success = function(fn) { |
| 9430 | assertArgFn(fn, 'fn'); |
no test coverage detected