est-il raisonnable d'utiliser node.js pour écrire une application autonome qui connectera deux API de repos? P>
Une extrémité sera un point de vente - système p>
L'autre sera une plate-forme de commerce électronique hébergée p>
Il y aura une interface minimale pour la configuration du service. rien de plus. P>
4 Réponses :
Bien sûr. L'API NODE.JS contient des méthodes pour effectuer des demandes HTTP: P>
http.request code>
li>
http.get code>
li>
ul>
Je suppose que l'application que vous écrivez est une application Web. Vous voudrez peut-être utiliser un cadre comme Express pour supprimer une partie du travail grogneur (voir aussi Cette question sur nœud.js webcrays ). p>
Oui, nœud.js est parfaitement adapté pour passer des appels vers des API externes. Tout comme tout dans le nœud, cependant, les fonctions de création de ces appels sont basées sur des événements, ce qui signifie faire des choses comme la mise sous forme de données de réponse de la réponse à la réception d'une seule réponse complétée.
Par exemple: P>
// get walking directions from central park to the empire state building var http = require("http"); url = "http://maps.googleapis.com/maps/api/directions/json?origin=Central Park&destination=Empire State Building&sensor=false&mode=walking"; // get is a simple wrapper for request() // which sets the http method to GET var request = http.get(url, function (response) { // data is streamed in chunks from the server // so we have to handle the "data" event var buffer = "", data, route; response.on("data", function (chunk) { buffer += chunk; }); response.on("end", function (err) { // finished transferring data // dump the raw data console.log(buffer); console.log("\n"); data = JSON.parse(buffer); route = data.routes[0]; // extract the distance and time console.log("Walking Distance: " + route.legs[0].distance.text); console.log("Time: " + route.legs[0].duration.text); }); });
Je me réchauffe vraiment au noeud du modèle filé. lorsque les données sont chuntées dans comme ceci. Est-il possible de commencer à le manipuler avant la fin du flux? arrive-t-il dans l'ordre?
Merci! Oui, les données sont diffusées dans l'ordre. Si vous êtes en mesure d'utiliser les données avant la mise en streaming, je ne vois pas pourquoi vous ne pouviez pas travailler avec elle avant alors (bien que je n'ai pas encore eu de cas d'utilisation pour cela).
Un outil plus simple et utile consiste à utiliser une API comme unirsest; L'UREST est un package en NPM qui est juste trop facile à utiliser JUS comme }); p> p>
"res" est indéfini!
Yo doit le mettre dans un itinéraire dans app.get ('/', auth.Protég, fonction (req, res) {}); code>
/*Below logics covered in below sample GET API -DB connection created in class -common function to execute the query -logging through bunyan library*/ const { APIResponse} = require('./../commonFun/utils'); const createlog = require('./../lib/createlog'); var obj = new DB(); //Test API routes.get('/testapi', (req, res) => { res.status(201).json({ message: 'API microservices test' }); }); dbObj = new DB(); routes.get('/getStore', (req, res) => { try { //create DB instance const store_id = req.body.storeID; const promiseReturnwithResult = selectQueryData('tablename', whereField, dbObj.conn); (promiseReturnwithResult).then((result) => { APIResponse(200, 'Data fetched successfully', result).then((result) => { res.send(result); }); }).catch((err) => { console.log(err); throw err; }) } catch (err) { console.log('Exception caught in getuser API', err); const e = new Error(); if (err.errors && err.errors.length > 0) { e.Error = 'Exception caught in getuser API'; e.message = err.errors[0].message; e.code = 500; res.status(404).send(APIResponse(e.code, e.message, e.Error)); createlog.writeErrorInLog(err); } } }); //create connection "use strict" const mysql = require("mysql"); class DB { constructor() { this.conn = mysql.createConnection({ host: 'localhost', user: 'root', password: 'pass', database: 'db_name' }); } connect() { this.conn.connect(function (err) { if (err) { console.error("error connecting: " + err.stack); return; } console.log("connected to DBB"); }); } //End class } module.exports = DB //queryTransaction.js File selectQueryData= (table,where,db_conn)=>{ return new Promise(function(resolve,reject){ try{ db_conn.query(`SELECT * FROM ${table} WHERE id = ${where}`,function(err,result){ if(err){ reject(err); }else{ resolve(result); } }); }catch(err){ console.log(err); } }); } module.exports= {selectQueryData}; //utils.js file APIResponse = async (status, msg, data = '',error=null) => { try { if (status) { return { statusCode: status, message: msg, PayLoad: data,error:error } } } catch (err) { console.log('Exception caught in getuser API', err); } } module.exports={ logsSetting: { name: "USER-API", streams: [ { level: 'error', path: '' // log ERROR and above to a file } ], },APIResponse } //createlogs.js File var bunyan = require('bunyan'); const dateFormat = require('dateformat'); const {logsSetting} = require('./../commonFun/utils'); module.exports.writeErrorInLog = (customError) => { let logConfig = {...logsSetting}; console.log('reached in writeErrorInLog',customError) const currentDate = dateFormat(new Date(), 'yyyy-mm-dd'); const path = logConfig.streams[0].path = `${__dirname}/../log/${currentDate}error.log`; const log = bunyan.createLogger(logConfig); log.error(customError); }
Oui c'est OK. Je ne vois pas pourquoi vous ne pouvez pas utiliser nœud.js à cette fin.