* @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)
| 8048 | </example> |
| 8049 | */ |
| 8050 | function $http(requestConfig) { |
| 8051 | var config = { |
| 8052 | method: 'get', |
| 8053 | transformRequest: defaults.transformRequest, |
| 8054 | transformResponse: defaults.transformResponse |
| 8055 | }; |
| 8056 | var headers = mergeHeaders(requestConfig); |
| 8057 | |
| 8058 | extend(config, requestConfig); |
| 8059 | config.headers = headers; |
| 8060 | config.method = uppercase(config.method); |
| 8061 | |
| 8062 | var serverRequest = function(config) { |
| 8063 | headers = config.headers; |
| 8064 | var reqData = transformData(config.data, headersGetter(headers), config.transformRequest); |
| 8065 | |
| 8066 | // strip content-type if data is undefined |
| 8067 | if (isUndefined(reqData)) { |
| 8068 | forEach(headers, function(value, header) { |
| 8069 | if (lowercase(header) === 'content-type') { |
| 8070 | delete headers[header]; |
| 8071 | } |
| 8072 | }); |
| 8073 | } |
| 8074 | |
| 8075 | if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) { |
| 8076 | config.withCredentials = defaults.withCredentials; |
| 8077 | } |
| 8078 | |
| 8079 | // send request |
| 8080 | return sendReq(config, reqData, headers).then(transformResponse, transformResponse); |
| 8081 | }; |
| 8082 | |
| 8083 | var chain = [serverRequest, undefined]; |
| 8084 | var promise = $q.when(config); |
| 8085 | |
| 8086 | // apply interceptors |
| 8087 | forEach(reversedInterceptors, function(interceptor) { |
| 8088 | if (interceptor.request || interceptor.requestError) { |
| 8089 | chain.unshift(interceptor.request, interceptor.requestError); |
| 8090 | } |
| 8091 | if (interceptor.response || interceptor.responseError) { |
| 8092 | chain.push(interceptor.response, interceptor.responseError); |
| 8093 | } |
| 8094 | }); |
| 8095 | |
| 8096 | while(chain.length) { |
| 8097 | var thenFn = chain.shift(); |
| 8098 | var rejectFn = chain.shift(); |
| 8099 | |
| 8100 | promise = promise.then(thenFn, rejectFn); |
| 8101 | } |
| 8102 | |
| 8103 | promise.success = function(fn) { |
| 8104 | promise.then(function(response) { |
| 8105 | fn(response.data, response.status, response.headers, config); |
| 8106 | }); |
| 8107 | return promise; |
no test coverage detected