XSJS - HTTP Request Handling
In this article we will show you an XSJS example to demonstrate – How to parse http request inside XSJS.
Note: To check all the examples on XSJS, read the article SAP HANA XSJS Examples
Introduction:
HTTP request contains many metadata information like header details, method type, query parameters, host and port no etc.
We can use XSJS $.request API to get these information if required.
For example:
If the URL is
http://hana_host:8000/mypackage/xsjs_service.xsjs?param1=value1¶m2=value2
Then,
$.request.parameters get(‘param1’) will return value1
$.request.headers.get('host') will return hana_host
Now, let us see a detail example of $.request API.
Example:
Create an XSJS file and paste the below code.
function performAdd() {
var body = '';
var num1 = $.request.parameters.get('num1');
var num2 = $.request.parameters.get('num2');
var answer;
//request.parameters are of type String. Parse them to Integer
answer = parseInt(num1) + parseInt(num2);
body = answer.toString();
$.response.setBody(body);
$.response.status = $.net.http.OK;
}
function getRequestDetails() {
var queryParameterDetails = 'QUERY PARAMETER DETAILS:' +" <br><br>";
var noOfParams = $.request.parameters.length;
queryParameterDetails = queryParameterDetails + 'NO OF QUERY PARAMTERS ARE:' + noOfParams + " <br>";
queryParameterDetails = queryParameterDetails + 'QUERY PARAMTERS AND THEIR VALUES ARE: ' + " <br>";
var i;
for (i = 0; i < $.request.parameters.length; ++i) {
queryParameterDetails = queryParameterDetails + $.request.parameters[i].name + ': ' + $.request.parameters[i].value + '<br>';
}
var requestHeaderDetails = '<br>' + 'REQUEST HEADER DETAILS:' + '<br><br>';
requestHeaderDetails = requestHeaderDetails + 'HOST NAME IS: ' + $.request.headers.get('host')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'REQUEST METHOD IS: ' + $.request.headers.get('~request_method')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'SERVER PORT IS: ' + $.request.headers.get('~server_port')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'CLIENT PROTOCOL IS: ' + $.request.headers.get('clientprotocol')+ "<br>";
requestHeaderDetails = requestHeaderDetails + 'URL PATH: ' + $.request.headers.get('~path')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'QUERY STRING: ' + $.request.headers.get('~query_string')+ " <br><br>";
var httpMethodName = 'HTTP METHOD IS: ';
switch ($.request.method) {
case $.net.http.GET:
httpMethodName = httpMethodName + 'GET';
break;
case $.net.http.POST:
httpMethodName = httpMethodName + 'POST';
break;
case $.net.http.PUT:
httpMethodName = httpMethodName + 'PUT';
break;
default:
break;
}
$.response.contentType = "text/html";
$.response.status = $.net.http.OK;
$.response.setBody(queryParameterDetails + requestHeaderDetails + httpMethodName);
}
var aCmd = $.request.parameters.get('cmd');
switch (aCmd) {
case "add":
performAdd();
break;
case "metadata":
getRequestDetails();
break;
default:
$.response.status = $.net.http.BAD_REQUEST;
$.response.setBody('Invalid Command');
}
Run XSJS Service:
Run the XSJS service and pass the query parameters as:
http://hana_host:8000/mypackage/HttpRequestHandling.xsjs?cmd=add&num1=20&num2=30
The output will give the addition of 2 number as below:
In this article we will show you an XSJS example to demonstrate – How to parse http request inside XSJS.
Note: To check all the examples on XSJS, read the article SAP HANA XSJS Examples
Introduction:
HTTP request contains many metadata information like header details, method type, query parameters, host and port no etc.
We can use XSJS $.request API to get these information if required.
For example:
If the URL is
http://hana_host:8000/mypackage/xsjs_service.xsjs?param1=value1¶m2=value2
Then,
$.request.parameters get(‘param1’) will return value1
$.request.headers.get('host') will return hana_host
Now, let us see a detail example of $.request API.
Example:
Create an XSJS file and paste the below code.
function performAdd() {
var body = '';
var num1 = $.request.parameters.get('num1');
var num2 = $.request.parameters.get('num2');
var answer;
//request.parameters are of type String. Parse them to Integer
answer = parseInt(num1) + parseInt(num2);
body = answer.toString();
$.response.setBody(body);
$.response.status = $.net.http.OK;
}
function getRequestDetails() {
var queryParameterDetails = 'QUERY PARAMETER DETAILS:' +" <br><br>";
var noOfParams = $.request.parameters.length;
queryParameterDetails = queryParameterDetails + 'NO OF QUERY PARAMTERS ARE:' + noOfParams + " <br>";
queryParameterDetails = queryParameterDetails + 'QUERY PARAMTERS AND THEIR VALUES ARE: ' + " <br>";
var i;
for (i = 0; i < $.request.parameters.length; ++i) {
queryParameterDetails = queryParameterDetails + $.request.parameters[i].name + ': ' + $.request.parameters[i].value + '<br>';
}
var requestHeaderDetails = '<br>' + 'REQUEST HEADER DETAILS:' + '<br><br>';
requestHeaderDetails = requestHeaderDetails + 'HOST NAME IS: ' + $.request.headers.get('host')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'REQUEST METHOD IS: ' + $.request.headers.get('~request_method')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'SERVER PORT IS: ' + $.request.headers.get('~server_port')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'CLIENT PROTOCOL IS: ' + $.request.headers.get('clientprotocol')+ "<br>";
requestHeaderDetails = requestHeaderDetails + 'URL PATH: ' + $.request.headers.get('~path')+ " <br>";
requestHeaderDetails = requestHeaderDetails + 'QUERY STRING: ' + $.request.headers.get('~query_string')+ " <br><br>";
var httpMethodName = 'HTTP METHOD IS: ';
switch ($.request.method) {
case $.net.http.GET:
httpMethodName = httpMethodName + 'GET';
break;
case $.net.http.POST:
httpMethodName = httpMethodName + 'POST';
break;
case $.net.http.PUT:
httpMethodName = httpMethodName + 'PUT';
break;
default:
break;
}
$.response.contentType = "text/html";
$.response.status = $.net.http.OK;
$.response.setBody(queryParameterDetails + requestHeaderDetails + httpMethodName);
}
var aCmd = $.request.parameters.get('cmd');
switch (aCmd) {
case "add":
performAdd();
break;
case "metadata":
getRequestDetails();
break;
default:
$.response.status = $.net.http.BAD_REQUEST;
$.response.setBody('Invalid Command');
}
Run XSJS Service:
Run the XSJS service and pass the query parameters as:
http://hana_host:8000/mypackage/HttpRequestHandling.xsjs?cmd=add&num1=20&num2=30
The output will give the addition of 2 number as below:
Change the query parameter as
http://hana_host:8000/mypackage/HttpRequestHandling.xsjs?cmd=metadata&num1=20&num2=30
The output will give Http request details as below:
Download Full Source Code:
Click here to download the full source code. Follow the steps mentioned in “How to Run.txt” to run it.
Reference:
Continue reading:
No comments:
Post a Comment