Méthode appropriée pour implémenter une requête AJAX côté serveur dans Node.js

Je construis un moteur de recherche qui interroge les API Twitter et Wiki côté serveur après que le client a soumis la chaîne de recherche. Quand j’étais encore complètement côté client, la demande AJAX à l’API Wiki ressemblait à:

$.ajax({ url: 'https://en.wikipedia.org/w/api.php', data: { action: 'query', list: 'search', srsearch: searchSsortingng, // variable pulled from input format: 'json', //origin: 'https://www.mediawiki.org' }, xhrFields: { withCredentials: true }, dataType: 'jsonp' // will probably use 'json' now that I'm server-side }).done( function ( data ) { searchParser(data); }); ... //searchParser() below 

Maintenant, j’ai implémenté une application Web Node.js qui extrait la chaîne de recherche d’un formulaire POST côté client sur la page d’accueil ( index.ejs ). Le serveur affichera ensuite la page de résultats ( results.ejs ) avec les résultats de recherche wiki et twitter. La recherche dans les API Twitter est déjà gérée avec le TwitterJSClient de BoyCook .

Je voudrais savoir le meilleur moyen d’effectuer cette requête exacte à partir de mon serveur. J’ai regardé autour de moi et je ne trouve pas de réponse succincte. Quelqu’un at-il des conseils à ce sujet?

Voici la solution à laquelle je suis arrivé à partir de la réponse de Jonathan :

 function wikiSearch () { var query = queryssortingng.ssortingngify({ action: 'query', list: 'search', srsearch: searchSsortingng, srlimit: 10, srwhat: 'text', format: 'json' }); var options = { hostname: 'en.wikipedia.org', path: '/w/api.php?' + query }; var req = https.request(options, function(res) { if (!res) { wikiData = "An error occured!"; complete(); }; var body = ''; console.log("statusCode: ", res.statusCode); res.setEncoding('utf8'); res.on('data', function(data) { body += data; }); res.on('end', function() { wikiData = wikiDataParser( JSON.parse(body) ); complete(); }); }); req.end(); req.on('error', function (err) { wikiData = "

MediaWiki API is currently down.

"; complete(); }) }; ... // complete() is below

Cela modifie la variable wikiData en fonction de la demande ou de la réponse.

En savoir plus sur la stack MEAN. Pour commencer, quelqu’un a généralement construit un module que vous installeriez avec NPM, ce qui simplifierait la connexion à l’API. Vous pouvez le faire manuellement, mais cela ne sert à rien si une version officielle de node.js est disponible:

 npm install twitter 

ci-dessous va dans votre fichier principal de l’application express. C’est simplifié par exemple pour l’amour.

 //include this....loads the twitter client api app...will make this a breeze var Twitter = require('twitter'); //your access keys and info to login into the api....fill them. var client = new Twitter({ consumer_key: '', consumer_secret: '', access_token_key: '', access_token_secret: '' }); //the below code executes when you hit this path app.post('/getTweetsYo', function (res, req, data) { // gets username from ajax post of user data....access via req.data. Passes it to twitter api request var params = {screen_name: req.data.username }; client.get('statuses/user_timeline', params, function(error, tweets, response){ if (!error) { console.log(tweets); // sending the tweets back to the front end! res.send(tweets); } });