-
Notifications
You must be signed in to change notification settings - Fork 86
Consuming REST APIs using the REST client
Imperative CLI Framework contains a package that lets you consume REST APIs. There are many packages that can call REST APIs. However, the REST Client package that is built into the framework lets you perform the following tasks:
- Log HTTP(s) calls automatically
- Encapsulate and promisify Node.js http(s) runtime methods
- Capture node-report for unexpected errors
- Work with the session management package to store and use cookies for repeated REST calls
To call a rest API using the Rest Client, you define a session that controls connection information for items such as the following:
- hostname
- port
- http / https
- no, basic, or token auth
After you create a session, you invoke RestClient
with the proper HTTP verb method, and whether a string or JSON response is expected.
The following examples illustrate how to use the HTTP verbs.
Example 1:
The following syntax illustrates how to use the HTTP GET verb to get string content from a public API:
import { Session, RestClient } from "@zowe/imperative";
// define "session" (e.g. how to connect) for non-authenticated endpoint
const session = new Session({ hostname: "jsonplaceholder.typicode.com" });
// REST GET - call "/users" URI / endpoint - on fulfilled, "users" will contain text user response
const users = await RestClient.getExpectString(session, "/users");
Example 2:
The following syntax illustrates how to use the HTTP POST verb with payload to get JSON responses from a public API:
import { Session, RestClient, Logger } from "@zowe/imperative";
// describe server input & response object
interface IPost {
id?: number;
userId: number;
title: string;
body: string;
}
// basic auth session example
const session = new Session({ hostname: "jsonplaceholder.typicode.com", type: "basic", user: "someUser", password: "somePass" });
// input POST data
const postData: IPost = { userId: 1, title: "some title", body: "some content" };
// REST POST - provide payload and an extra HTTP header
const postResponse = await RestClient.postExpectJSON<IPost>(session, "/posts", [{ "Content-Type": "application/json" }], postData);
// log server response id
Logger.getConsoleLogger().debug("Id is: " + postResponse.id);
-
Core Features
- Imperative Configuration
- Defining Commands
- Command Handlers
- Command Option Precedence
- Environment Variables
- Help Generator
- Experimental Commands
- Creating Commands Using Chained Handlers
- Configuring Logging
- Working with Team Configuration
- Defining and Programming Profiles
- Managing Secure Properties
- Deprecated User Profiles
- Consuming REST APIs Using the REST Client
- Implementing Progress Bars
- Plugins