J'ai une API qui retourne une JSON de MongoDB:Comment puis-je concevoir mon API Node.js pour que je puisse également la consommer du côté serveur?
// In router.js
var api = require('api')
app.get('/lists', api.lists);
// In api.js
var db = require('db')
exports.lists = function(req, res) {
db.lists.find({}, function(err, lists) {
res.send(lists);
});
};
Est-il possible de concevoir l'API pour que je puisse aussi consommer de l'intérieur de mon application Node.js? J'essaie d'éviter d'avoir à dupliquer le code de la base de données en dehors de l'API. J'ai essentiellement un contrôleur qui peut rendre le côté serveur de données:
// In controller.js
var api = require('api')
exports.page = function(req, res) {
res.send(api.lists()); // This won't work
};
J'ai trouvé une solution hacky qui devait passer une fonction de rappel aux api.lists(), mais j'ai le sentiment est le " mauvais "moyen d'atteindre ceci:
// In api.js
exports.lists = function(req, res, callback) {
db.lists.find({}, function(err, lists) {
if(callback){
callback(lists);
} else {
res.send(lists);
}
});
};
Des idées?
Vous voulez consommer votre propre api? Jamais entendu ça avant. Peut-être que vous voulez utiliser des modèles que vous pouvez utiliser dans deux endroits différents ... se pencher sur express. – chovy
Cela ressemble beaucoup à la découverte wsdl/webservice, c'est-à-dire que vous pouvez créer automatiquement des méthodes/propriétés en fonction des appels API que vous exposez. Si c'est le cas, bonne chance, il y a eu quelques tentatives pour standardiser ce que rien n'a bloqué jusqu'à présent. – booyaa