Powiedz, że muszę podać parametr GroupId dla każdego żądania użytkownika, ale nie chcę modyfikować każdego zgłoszenia serwisowego, aby je uwzględnić. Czy to możliwe, aby GroupId był automatycznie dołączany do wszystkich żądań, niezależnie od tego, czy jest to ciąg znaków zapytania POST czy GET?
czekałem do funkcji przechwytujących request
, ale nie można dowiedzieć się, jak wprowadzać zmiany
** Edycja **
Aktualny próbka poniżej roboczego jest combo Morgan Delaney i haimlit-tych sugestie (myślę, że i tak jest to przeczucie). Podstawową ideą jest to, że jeśli żądanie jest POST, zmodyfikuj config.data
. W przypadku GET zmień params
. Wydaje się działać do tej pory.
Nadal nie wiadomo, jak działa system dostawcy w Angular, więc nie jestem pewien, czy modyfikowanie właściwości data.params jest całkowicie odpowiednie.
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(['$rootScope', '$q', 'httpBuffer', function ($rootScope, $q, httpBuffer) {
return {
request: function (config) {
if (config.data === undefined) {
//Do nothing if data is not originally supplied from the calling method
}
else {
config.data.GroupId = 7;
}
if (config.method === 'GET') {
if (config.params === undefined) {
config.params = {};
}
config.params.GroupId = 7;
console.log(config.params);
}
return config;
}
};
} ]);
} ]);
Można utworzyć usługę skrótów i nazywają to coś takiego jak 'shortcut.get (url, data)', która dołączy wszystkie dane konfiguracyjne następnie zwracają ' obietnica $ http'. http://stackoverflow.com/questions/17497006/use-http-inside-custom-provider-in-app-config-angular-js –
Oto link z przydatnymi przykładami. Jeśli nadal nie możesz go uruchomić, opublikuj plunkera tym, co próbowałeś, proszę. http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/ – haimlit
@Morgan Delaney Thanks. Zaktualizowałem moje pytanie tak, jak mam to obecnie działa. Czy sposób, w jaki podjąłem, ma jakieś negatywne konsekwencje w porównaniu z tym, co sugerowałeś? – Cabbagesocks