* @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)
| 10007 | </example> |
| 10008 | */ |
| 10009 | function $http(requestConfig) { |
| 10010 | |
| 10011 | if (!angular.isObject(requestConfig)) { |
| 10012 | throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig); |
| 10013 | } |
| 10014 | |
| 10015 | var config = extend({ |
| 10016 | method: 'get', |
| 10017 | transformRequest: defaults.transformRequest, |
| 10018 | transformResponse: defaults.transformResponse, |
| 10019 | paramSerializer: defaults.paramSerializer |
| 10020 | }, requestConfig); |
| 10021 | |
| 10022 | config.headers = mergeHeaders(requestConfig); |
| 10023 | config.method = uppercase(config.method); |
| 10024 | config.paramSerializer = isString(config.paramSerializer) ? |
| 10025 | $injector.get(config.paramSerializer) : config.paramSerializer; |
| 10026 | |
| 10027 | var serverRequest = function(config) { |
| 10028 | var headers = config.headers; |
| 10029 | var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest); |
| 10030 | |
| 10031 | // strip content-type if data is undefined |
| 10032 | if (isUndefined(reqData)) { |
| 10033 | forEach(headers, function(value, header) { |
| 10034 | if (lowercase(header) === 'content-type') { |
| 10035 | delete headers[header]; |
| 10036 | } |
| 10037 | }); |
| 10038 | } |
| 10039 | |
| 10040 | if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) { |
| 10041 | config.withCredentials = defaults.withCredentials; |
| 10042 | } |
| 10043 | |
| 10044 | // send request |
| 10045 | return sendReq(config, reqData).then(transformResponse, transformResponse); |
| 10046 | }; |
| 10047 | |
| 10048 | var chain = [serverRequest, undefined]; |
| 10049 | var promise = $q.when(config); |
| 10050 | |
| 10051 | // apply interceptors |
| 10052 | forEach(reversedInterceptors, function(interceptor) { |
| 10053 | if (interceptor.request || interceptor.requestError) { |
| 10054 | chain.unshift(interceptor.request, interceptor.requestError); |
| 10055 | } |
| 10056 | if (interceptor.response || interceptor.responseError) { |
| 10057 | chain.push(interceptor.response, interceptor.responseError); |
| 10058 | } |
| 10059 | }); |
| 10060 | |
| 10061 | while (chain.length) { |
| 10062 | var thenFn = chain.shift(); |
| 10063 | var rejectFn = chain.shift(); |
| 10064 | |
| 10065 | promise = promise.then(thenFn, rejectFn); |
| 10066 | } |
no test coverage detected