I w zasadzie nazwać get
żądań tak:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}).$promise.then(function(data){
console.log(data)
})
Działa to dobrze .. ale jak mogę nagłówki odpowiedzi?
I w zasadzie nazwać get
żądań tak:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}).$promise.then(function(data){
console.log(data)
})
Działa to dobrze .. ale jak mogę nagłówki odpowiedzi?
Można użyć akcję transformResponse defined here ten pozwoli Ci dodać nagłówki
$resource('/', {}, {
get: {
method: 'GET',
transformResponse: function(data, headers){
response = {}
response.data = data;
response.headers = headers();
return response;
}
}
Zobacz przykład pracuje tu JSFiddle
@ odpowiedź Marcina działa na takich samych wniosków domen. Dlatego chciałbym dodać do jego odpowiedzi, że jeśli używasz żądań między domenami, będziesz musiał dodać kolejny nagłówek z Access-Control-Expose-Headers: X-Blah, X-Bla
wraz z nagłówkiem Access-Control-Allow-Origin:*
.
gdzie X-Blah
i X-Bla
są niestandardowymi nagłówkami.
Również nie trzeba używać żądania przekształcenia, aby uzyskać nagłówki. Możesz użyć tego kodu:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}, function(data, headersFun){
console.log(data, headersFun());
})
Zobacz this skrzypce. Mam nadzieję, że to pomoże !!!
Myślę, że jest to wygodniejsze niż obecnie akceptowane odpowiedź (przynajmniej w 2016 r.). Angular automatycznie podaje wartości nagłówków za pomocą drugiego parametru (nie zapomnij użyć paranthezy, ponieważ jest to funkcja, a nie obiekt bezpośredni). – beawolf
Nie ma większego znaczenia w międzydomenowej domenie, a bardziej istotna jest funkcja nagłówka, która jest drugim parametrem funkcji "wtedy" - prawie ominąłem to z powodu informacji o wielu domenach! – Sean
Istnieje subtelna, ale niezwykle ważna różnica między tym, co tu napisałeś, a tym, co jest w skrzypcach. Skrzypce używa wywołania 'get' z wywołania zwrotnego dla sukcesu i błędu, w tym przypadku istnieje headersFun. Ale obsługa odpowiedzi za pomocą '$ promise.then' tak jak napisałeś powyżej nie ma takiego drugiego parametru -' headersFun' jest niezdefiniowany. – Danny
Stare pytanie, ale myślę, że warto wspomnieć o przyszłym numerze referencyjnym. Istnieje rozwiązanie „urzędowy” za to w kątowym dokumentacji:
Warto zauważyć, że callback sukces GET, zapytania i innych metod zostanie podjęta w odpowiedzi, że przyszedł z serwera, jak również jako $ http nagłówku funkcji getter, więc można było przepisać powyższy przykład i uzyskać dostęp do nagłówków http jak:
var User = $resource('/user/:userId', {userId:'@id'});
var users = User.query({}, function(users, responseHeaders){
// ...
console.log(responseHeaders('x-app-pagination-current-page'));
});
(kod z docs nieznacznie zaktualizowanej dla jasności)
Dla żądań CORS wymagane jest ujawnienie nagłówków wymienionych w innych odpowiedziach.
To dziękuje, dziękuję – Nathan
nie działa z nowszymi wersjami. Funkcja, która przekształca odpowiedź, powinna zwrócić teraz ponownie zserializowane dane. – EvAlex
Po prostu uzyskaj dostęp do funkcji 'headersGetter', która zostanie przekazana jako drugi parametr po danych. Zobacz odpowiedź poniżej lub tutaj: https://docs.angularjs.org/api/ngResource/service/$resource – Sean