Exercise: Implementing Resilience in a TypeScript NestJS Application

Objectives
After completing this lesson, you will be able to:

After completing this lesson, you will be able to:

  • Implementing resilience in a TypeScript NestJS application

Implementing resilience in a TypeScript NestJS application

In this exercise, you will learn how to implement resilience in SAP Cloud SDK application. We will use the Mock Server instead of the actual SAP S/4HANA Cloud.

Prerequisites

For the complete execution of current exercise, you must execute the following activities first, using SAP Business Application Studio:

  1. Execute the following exercises:
    • Creating your free trial account in SAP BTP
    • Setting up the mock server, so that you have the Mock server program available in the cloud-s4-sdk-book folder.
  2. Run the following commands in a terminal, in case you didn't do it already in previous exercises, to clone the Git repository for the course:
    Code snippet
    cd ~/projects
    git clone https://github.com/SAP-samples/cloud-sdk-learning-journey.git
    Expand
  3. Choose FileOpen Folder and open the /home/user/projects/cloud-sdk-learning-journey/ folder.

Steps

  1. Checkout the branch tsnestjs_v2.0_resilience in SAP Business Application Studio

    1. Open SAP Business Application Studio.

    2. Run the following commands in the terminal.

      Code snippet
      cd ~/projects/cloud-sdk-learning-journey
      git checkout -f tsnestjs_v2.0_resilience
      Expand
  2. Build and run the project

    1. Run the application by executing the following commands in the terminal

      Code snippet
      cd cloudsdk_bp_ts
      npm i
      npm run start:dev
      Expand
  3. Make sure that the Mock Server is up and running as described in the related previous exercise.

    1. In case the Mock server is installed but not started, you need to open a new terminal window and run the following commands:

      Code snippet
      cd ~/projects/cloud-s4-sdk-book
      npm run start
      Expand
  4. Query the Business Partner API of SAP S/4HANA Cloud

    1. Open the requests.http file

    2. Click on Send Request in the requests.http file to submit the GET request for business partners

    3. Verify that the list of business partners are returned from the Mock Server. Note: If the Mock Server is not running, make sure to run the Mock Server on port 8081 by following the prerequisites at the top

    4. Stop the Mock Server by pressing Ctrl + C in the Mock Server project terminal

    5. Click on Send Request in the requests.http file to submit the GET request for business partners within 30 seconds.

    6. Verify that the list of business partners are returned from the cache, since the Mock Server is not running

    7. Click on Send Request in the requests.http file to submit the GET request for business partners after 30 seconds. The Business Partners are not returned anymore.

    8. Re-start the mock server and re-run the query to make sure it works again.

    9. Stop the running application using Ctrl + C in the corresponding terminal window.

  5. Optional: code walk-through.

    1. Review code in the following source files:

      File nameComments on code changes
      business-partner.service.ts

      Code logic is as follows...

      1. Import resilience from the @sap-cloud-sdk/resilience module
      2. Use the middleware function to build a resilience middleware. In our example, we will use the following values
        • timeout: 30 seconds
        • circuitBreaker: true
        • retry: true
      package.jsonNew SAP Cloud SDK modules have been installed for the project
      requests.httpProvides various HTTP requests that can be submitted to query the Business Partner API
      commands.txtProvides various commands that can be run on the terminal
      Note
      Check out the SAP Cloud SDK documentation on Executing an OData GET request using SAP Cloud SDK for JavaScript. https://sap.github.io/cloud-sdk/docs/js/tutorials/getting-started/execute-an-odata-request
  6. Optional: Manually modify the project in ~/projects/cloudsdk_bp_tsto use resilience.

    1. Open the projects/cloudsdk_bp_ts folder in the workspace, by choosing FileOpen Folder....

    2. Create or update the following files in the table below

      File nameTypeContents
      business-partner.service.ts

      Path: src/business-partner

      Modified

      Copy contents from here...

    3. Build and run the project in projects/cloudsdk_bp_ts:

      Code snippet
      cd ~/projects/cloudsdk_bp_ts
      npm i
      npm run start:dev
      Expand
    4. Stop the running application using Ctrl + C in the corresponding terminal window.

Log in to track your progress & complete quizzes