Skip to Content
Technical Articles

Use CloudSDK for http request in NodeJS on SCP CF


In earlier blog posts I explained how to use the destination service in a NodeJS application to get data from an external system:

In this example I used the npm package “request-promise” which is in the meanwhile deprecated: . I also added an example how to do this with Axios-CF. Besides my examples, there are other ways to do the same. For example, we also have the library from Volker Buzek “sap-cf-destination” :


There is even a library that could be used for this as well, which is even closer to us then we are aware of. At least, I was not aware of and may be some of you as well. SAP provides us a function to do this as part of the SAP Cloud SDK.

The Cloud SDK is a set of tools and libraries for consuming, building or extending SAP services and applications in the cloud-native way and deploying them to SAP Cloud Platform. More about the Cloud SDK:

You can use everything of the Cloud SDK for building apps or you could consider to build an app your own way and use some parts of the Cloud SDK.

I’m not sure many devs are aware that the Cloud SDK contains many other functions:

One of the many functions provided by Cloud SDK is “executeHttpRequest”. This function can be used to send a http request in combination with a destination.

The benefit of this function as part of the Cloud SDK => it’s being maintained by SAP and supports all possible destination in SCP.

In this blog I want to create awareness of this functionality and shortly show how it can be used in a NodeJS app.

It is also mentioned in this blog post as part of new SAP Cloud SDK release:

How to use

As example I will use the “executeHttpRequest” as part of an ExpressJS app.

The function “executeHttpRequest” is part of the “core” module of the Cloud SDK. It is enough to only install this module. Start by installing the npm package “@sap-cloud-sdk/core”:

npm i @sap-cloud-sdk/core

You can find more in the npm documentation:


Start your script by loading the Cloud SDK core:

const core = require('@sap-cloud-sdk/core');


Now you are able to use it in your ExpressJS script by passing the name of the destination as an object and the http config as a second object:


let response = await core.executeHttpRequest({ destinationName: sDestinationName}, {
    method: 'GET',
    url: "/service/endpoint"


You can also consider to separate the “getDestination” function:


const dest = await core.getDestination(sDestinationName);


And pass the destination as the first object now:

let response = await core.executeHttpRequest(dest, {
        method: 'GET',
        url: "/service/endpoint"


The result will be in the property data of the response for both cases:



Full script:

const express = require('express');
const core = require('@sap-cloud-sdk/core');
const xsenv = require('@sap/xsenv');

const app = express()
const port = process.env.PORT || 3000;

const sDestinationName = 'destination-name';

app.get('/data', async (req, res) => {
    // const dest = await core.getDestination(sDestinationName);
    let response = await core.executeHttpRequest({ destinationName: sDestinationName}, {
        method: 'GET',
        url: "/service/endpoint"

app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))


You can find my example project on GitHub:



This blog post is short but nevertheless valuable in case you want to work with destinations in NodeJS. No need for any third-party library which won’t guarantee long term support like SAP does ?


Kr, Wouter


You must be Logged on to comment or reply to a post.
  • Hi Wouter,


    Great to see that we can do this just by just installing the core package.

    I managed to use @sap/destinations yesterday which is very similar in usage and compactness, but as it's unclear if that package will remain updated I am switching to this method instead.


    Thanks for sharing!

      • SAP statement:

        Thank you for your interest in the Node.js client library of SAP CP Destination service (Cloud Foundry) environment. The library is still in its early state in terms of feature richness and maturity. It is an official service client library, and there are plans to further extend it, based on demand and overall priority. It’s true that recently no changes have been done, and the reason for this is currently putting more focus on server side changes and improvements.

        We will take care to improve the changelog.