cap-remote-service-rest

0.1.1 • Public • Published

Remote REST Service Implementation for SAP Cloud Application Programming Model

This library contains a generic implementation to invoke remote REST services in a CAP Node.js app. REST (or REST-like) APIs described in OpenAPI can be imported as CDS service models. The app interacts with the remote API using the well-known CAP APIs.

Installation

The remote REST service implementation can be installed via NPM:

npm install cap-remote-service-rest

Configuration

You can generate a CDS service model from an OpenAPI document using the CAP development kit @sap/cds-dk:

cds import Petstore.json

Each schema in OpenAPI is imported as type and each service path as unbound function (for GET endpoints) or action (everything else). See more details in the CAP release notes.

Create a new Javascript file, add a class and make it inheriting from RestRemoteService. This service implementation translates OData action and function requests into REST HTTP requests that are sent to the remote system using CAP's remote service API.

const { RestRemoteService } = require("cap-remote-service-rest");

class PetstoreService extends RestRemoteService {}

module.exports = PetstoreService;

Define this class as service implementation for your imported service model in the cds.requires section of .cdsrc.json or package.json:

{
  "cds": {
    "requires": {
      "Petstore": {
        "kind": "rest",
        "model": "srv/external/PetstoreService",
        "impl": "srv/external/PetstoreService.js"
      }
    }
  }
}

Runtime

To invoke the remote REST service you can simply connect to the CDS service and invoke its unbound action or functions:

const srv = await cds.connect.to("Petstore");
const results = await srv.send("pet_findByStatus", { status: ["available"] });

Customization

Optionally, you can customize the headers and query parameters of the request towards the remote API by overwriting the appropriate methods in the service class, for instance to add an API key:

class PetstoreService extends RestRemoteService {
  /**
   * @param headers a plain Javascript object
   */
  customizeHeaders(headers) {
    headers["api_key"] = "secret";
  }

  /**
   * @param queryParams an `URLSearchParam` object
   */
  customizeQueryParams(queryParams) {
    queryParams.set("api_key", "secret");
  }
}

Readme

Keywords

none

Package Sidebar

Install

npm i cap-remote-service-rest

Weekly Downloads

5

Version

0.1.1

License

MIT

Unpacked Size

69.5 kB

Total Files

21

Last publish

Collaborators

  • robertwitt