XSJS - HTTP Request Handling

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&param2=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