\$\begingroup\$
\$\endgroup\$
I have multiple API calls so I created a service however I would like to find a way to remove the duplication
myAppServices.factory('apiService', function ($http, $q) {
return {
getDocuments: function () {
return $http.get('/api/autodeskdocuments/1')
.then(function (response) {
if (typeof response.data == 'object') {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function (response) {
// something went wrong
return $q.reject(response.data);
});
},
getSharePoint: function () {
return $http.get('/api/sharepointheaderdata/1')
.then(function (response) {
if (typeof response.data == 'object') {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function (response) {
// something went wrong
return $q.reject(response.data);
});
}
};
});
As you can see both functions has some duplication with the .then(...) Any suggestions as to make this cleaner?
1 Answer 1
\$\begingroup\$
\$\endgroup\$
1
You can extract the whole ajax to a function.
myAppServices.factory('apiService', function ($http, $q) {
var get = function(endpoint) {
return $http.get(endpoint)
.then(function (response) {
if (typeof response.data == 'object') {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function (response) {
// something went wrong
return $q.reject(response.data);
});
}
return {
getDocuments: function () {
return get('/api/autodeskdocuments/1');
},
getSharePoint: function () {
return get('/api/sharepointheaderdata/1');
}
};
});
answered Feb 11, 2015 at 18:59
-
\$\begingroup\$ wow, thanks... that makes more sense and so much cleaner! \$\endgroup\$jeffci– jeffci2015年02月11日 19:16:29 +00:00Commented Feb 11, 2015 at 19:16
default