2014-12-22 8 views
7

Chciałbym wiedzieć, czy istnieje sposób na przywrócenie określonego kodu statusu HTTP z metody zdalnej.Jak zwrócić określone kody stanu http z metody zdalnej w pętli zwrotnej?

Widzę, że istnieje funkcja zwrotna, którą możemy przekazać obiekt błędu, ale jak zdefiniować kod statusu HTTP?

+1

których technologia używacie? – nburk

+0

Jeśli chodzi o sprzężenie zwrotne, to jest to odpowiedź autorów: https://groups.google.com/d/msg/loopbackjs/oK2g5A_h6vI/VNTD3_GDMQkJ – pulkitsinghal

Odpowiedz

-1

Możesz przywrócić dowolny status, tak jak w ExpressJS.

... 
res.status(400).send('Bad Request'); 
... 

Zobacz http://expressjs.com/api.html

+0

Rozumiem; ale jak uzyskać instancję ekspresowej odpowiedzi? – ppoliani

+0

Zależy od tego, w której części cyklu życia się znajdujesz. W niektórych miejscach masz dostęp do ctx, w którym to przypadku możesz zrobić "ctx.req". Istnieją również główne dyskusje wokół getCurrentContext: https://github.com/strongloop/loopback/issues/1676. – superkhau

+2

Dlaczego jest odrzucany? Działa i nie jest przestarzałym api, http://expressjs.com/en/api.html#res.status – cpxPratik

2

w zdalnej rejestracji metoda:

YourModel.remoteMethod('yourMethod', { 
    accepts: [ 
     {arg: 'res', type: 'object', http:{source: 'res'}} 
    ], 
    ... 
    returns: {root: true, type: 'string'}, 
    http: {path: '/:id/data', verb: 'get'} 
    }); 
15

Jeśli chcesz użyć kodu stanu HTTP powiadomić błędu, można przekazać błąd w metodach zdalnych metoda zwrotna:

var error = new Error("New password and confirmation do not match"); 
 
error.status = 400; 
 
return cb(error);

można znaleźć więcej informacji o obiekcie błędu tutaj: Error object

Jeśli chcesz tylko zmienić status odpowiedzi HTTP bez użycia błąd, można użyć jednej z dwóch metod zdefiniowany przez którąkolwiek #danielrvt lub #superkhau. Aby uzyskać odwołanie do obiektu żądania wymienionego przez #superkhau, w rejestracji metody można zdefiniować dodatkowy argument, który zostanie przekazany do metody zdalnej. Zobacz HTTP mapping of input arguments

+1

Czy to nie zwraca całego śledzenia stosu? Jeśli chcesz zwrócić '{status: 404, message: 'Not found'}' czy jest lepsze podejście? – user3162553

0

Jeśli wystarczy zmodyfikować statusu odpowiedzi, po prostu zrobić:

ctx.res.status(400); 
return cb(null); 
Powiązane problemy