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"