Sono nuovo di Sails e sto cercando di capire il metodo migliore/corretto per la restituzione di un oggetto standard per ogni risposta API.Come posso avvolgere ogni risposta dell'API in un oggetto di risposta standard in SailsJS?
Il contenitore nostro front-end richiede è:
{
"success": true/false,
"session": true/false,
"errors": [],
"payload": []
}
Attualmente, sto sovrascrivendo le azioni blueprint in ogni controller come in questo esempio (che ha appena sembra così molto, molto sbagliato):
find : function(req, res){
var id = req.param('id');
Foo.findOne({ id : id }).exec(function(err, aFoo){
res.json(
AppSvc.jsonReply(
req,
[],
aFoo
), 200
);
});
}
E in AppSvc.js:
jsonReply : function(req, errors, data){
return {
success : (errors && errors.length ? false : true),
session : (req.session.authenticated === true),
errors : (errors && errors.length ? errors : []),
payload : (data ? data : [])
};
}
Inoltre, ho avuto di mod ogni metodo res.json()
per ogni risposta predefinita (badRequest, notFound, ecc.). Di nuovo, questo sembra così sbagliato.
Quindi, come posso incanalare correttamente tutte le risposte API in un contenitore standard?
È anche possibile sovrascrivere il metodo 'find' del progetto globale utilizzando un file' api/blueprints/find.js'! – sgress454
Questo è stato perfetto. Ho sovrascritto le chiamate 'res.json()' in tutti i file api/responses/* per usare il mio contenitore 'AppSvc.jsonReply'. All'interno dei miei controller posso ora eseguire il solito 'res.ok (data);', 'res.notFound();', ecc. Grazie Rob! – NotJustClarkKent