diff --git a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html index ff66006ed..54f1086b4 100644 --- a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html +++ b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.html @@ -25,11 +25,17 @@ +
+
+ + +
+
@@ -84,6 +90,7 @@ name: {value:""}, method:{value:"GET"}, ret: {value:"txt"}, + usePayloadAsParameters: {value: false}, url:{value:"",validate:function(v) { return (v.trim().length === 0) || (v.indexOf("://") === -1) || (v.trim().indexOf("http") === 0)} }, tls: {type:"tls-config",required: false}, proxy: {type:"http proxy",required: false} @@ -114,6 +121,13 @@ $('#node-input-password').val(''); } }); + $("#node-input-method").change(function() { + if ($(this).val() == "GET") { + $(".node-input-usePayloadAsParameters-row").show(); + } else { + $(".node-input-usePayloadAsParameters-row").hide(); + } + }); if (this.credentials.user || this.credentials.has_password) { $('#node-input-useAuth').prop('checked', true); } else { diff --git a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js index 633f3a7a9..1217d5fcc 100644 --- a/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js +++ b/packages/node_modules/@node-red/nodes/core/io/21-httprequest.js @@ -28,6 +28,7 @@ module.exports = function(RED) { var nodeUrl = n.url; var isTemplatedUrl = (nodeUrl||"").indexOf("{{") != -1; var nodeMethod = n.method || "GET"; + var usePayloadAsParameters = n.usePayloadAsParameters; if (n.tls) { var tlsNode = RED.nodes.getNode(n.tls); } @@ -206,6 +207,22 @@ module.exports = function(RED) { } opts.body = payload; } + + if (method == 'GET' && typeof msg.payload !== "undefined" && usePayloadAsParameters) { + if (typeof msg.payload === "object") { + if(opts.url.indexOf("?") !== -1) { + opts.url += "&" + querystring.stringify(msg.payload); + } else { + opts.url += "?" + querystring.stringify(msg.payload); + } + + } else { + //I'm not sure where to set "httpin.errors.unvalid-payload" :( + node.error(RED._("httpin.errors.invalid-payload"),msg); + return; + } + } + // revert to user supplied Capitalisation if needed. if (opts.headers.hasOwnProperty('content-type') && (ctSet !== 'content-type')) { opts.headers[ctSet] = opts.headers['content-type']; diff --git a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json index 8d2ba84cf..73afd926b 100644 --- a/packages/node_modules/@node-red/nodes/locales/en-US/messages.json +++ b/packages/node_modules/@node-red/nodes/locales/en-US/messages.json @@ -377,7 +377,8 @@ "upload": "Accept file uploads?", "status": "Status code", "headers": "Headers", - "other": "other" + "other": "other", + "usePayloadAsParameters" : "Use payload properties as parameters" }, "setby": "- set by msg.method -", "basicauth": "Use basic authentication", @@ -405,7 +406,8 @@ "deprecated-call":"Deprecated call to __method__", "invalid-transport":"non-http transport requested", "timeout-isnan": "Timeout value is not a valid number, ignoring", - "timeout-isnegative": "Timeout value is negative, ignoring" + "timeout-isnegative": "Timeout value is negative, ignoring", + "invalid-payload": "Invalid payload" }, "status": { "requesting": "requesting"