Есть бэкенд API на PHP к которому обращается VueJS.
Т.к. методы обращения к API очень похожи, хотелось бы вынести их в отдельную функцию и передавать результат запроса к API.
То, как реализовано сейчас:
fetchStats: function (uid)
{
var vm = this;
var url = vm.buildApiUrl('/api/stats?uid=' + uid);
this.$http.get(url).then(function (response) {
vm.stats = response.data.stats;
}).catch(function (error) {
if (error.response.status == 403) {
vm.redirectLogin();
}
});
},
fetchComments: function (uid)
{
var vm = this;
var url = vm.buildApiUrl('/api/comments?uid=' + uid);
this.$http.get(url).then(function (response) {
vm.comments= response.data.comments;
}).catch(function (error) {
if (error.response.status == 403) {
vm.redirectLogin();
}
});
},
fetchMessages: function (uid)
{
var vm = this;
var url = vm.buildApiUrl('/api/messages?uid=' + uid);
this.$http.get(url).then(function (response) {
vm.messages= response.data.messages;
}).catch(function (error) {
if (error.response.status == 403) {
vm.redirectLogin();
}
});
},
То, как хотелось бы:
fetchBuilder: function (url)
{
var vm = this;
this.$http.get(url).then(function (responce) {
return response;
}).catch(function (error) {
if (error.response.status == 403) {
vm.redirectLogin();
}
});
};
var messages = vm.fetchBuilder('/api/messages?uid=' + uid );
var comments= vm.fetchBuilder('/api/comments?uid=' + uid );
var stats = vm.fetchBuilder('/api/stats ?uid=' + uid );