//request is a node module
var request = require('request');
/**
* send REST web service message to server
* @function sendMessage
* @param {string} method - GET, POST, PUT, DELETE
* @param {string} url - server URL
* @param {object} json - The data to be send
* @param {object} cb - callback function
*@param{object}formData-The data related to file upload
* @returns void
*/
function sendMessage(type,url,method,json,retries,formData,cb){
var options={
url:url,
formData:formData,
json:true,
switch (method) {
case 'get':
request.get(options, cb);
break;
case 'post':
envelope.token = json.token;
envelope.package = json.package;
options.body = envelope;
request.post(options, cb);
break;
case 'put':
envelope.package = json.package;
envelope.token = json.token;
options.body = envelope;
request.put(options, cb);
break;
case 'delete':
request.delete(options, cb);
break;
}
Hier nachrichts() fuction bereits geschrieben und gut in allen Modulen ohne Formdata-Parameter (sendMessage(type,url,method,json,retries,cb)
), aber für Datei-Upload verwendet werden, müssen wir den Dateipfad ohne Verwendung von Formulardaten übergeben Ändern Sie alle anderen Funktionen ist das möglich.Wie mit Rückruf in Javascript optionale Parameter zu handhaben
Mit so vielen Parametern sollten Sie stattdessen ein einzelnes Objekt verwenden. – Lewis
Ja, Sie haben Recht, aber, Es ist bereits so gebaut und überall auf den anderen Modulen verwendet. Veränderung ist jetzt unmöglich. und ich brauche eine Lösung ohne Auswirkungen auf andere Module –
Sie möchten dies lesen [Wie Funktionen in Javascript überladen] (http://stackoverflow.com/questions/10855908/how-to-overload-functions-in-javascript/10855939# 10855939), die auch optionale Argumente umfasst. – jfriend00