This module is used for making API requests. Uses Node.js HTTPS under the hood.
- Coming soon
- Supports HTTPS and HTTP
- Supports JSON/XML requests. By default XML requests will convert response and return JSON object
- Automatically follows 302 redirects
- Custom retry logic
- Simplified multipart form data upload
method
- Supports standard HTTP verbs (default: GET
)
url
- Full URL to send request to. Will support HTTP and HTTPS requests
body
- Request body to send
formData
- FormData object to send
parameters
- Query parameters to include in request
escapeParameters
- If true it will escape all parameters before they are added to the URL (default: true
)
headers
- Headers to include in request
auth
- Authorization required to send request
key
- Key required for request
cert
- Certificate required for request
passphrase
- Passphrase for certificate
resolveWithBodyOnly
- If true only the response body will be returned (default: false
)
rejectNon2xx
- If true it will reject non 2xx status codes (default: true
)
debug
- If true it will log information about the request/response (default: false
)
timeout
- MS to wait for a response (default: 10000
)
retryLogic
- Array of RetryLogic
objects for automatic request retries
Making an API call
const url: string = 'https://jsonplaceholder.typicode.com/comments';
try {
const request = new OpenRequest({ url });
const response = await request.execute();
} catch (error) {
throw new Error(error);
}
Making an API call using XML
const body: string = `<?xml version="1.0" encoding="UTF-8"?>
<Pet>
<id>0</id>
<Category>
<id>0</id>
<name>string</name>
</Category>
<name>Doggo</name>
<photoUrl>
<photoUrl>string</photoUrl>
</photoUrl>
<tag>
<Tag>
<id>0</id>
<name>string</name>
</Tag>
</tag>
<status>available</status>
</Pet>`;
const url: string = 'http://petstore.swagger.io/v2/pet';
const headers: object = { Accept: 'application/xml', 'Content-Type': 'application/xml' };
try {
const request = new OpenRequest({ method: Method.POST, url, body, headers });
const response = await request.execute();
} catch (error) {
throw new Error(error);
}
Making an API call using query parameters
const url: string = 'https://jsonplaceholder.typicode.com/comments';
const parameters: object = { postId: 1 };
try {
const request = new OpenRequest({ url, parameters });
const response = await request.execute();
} catch (error) {
throw new Error(error);
}
Uploading multipart form data
import * as fs from 'fs';
import * as FormData from 'form-data';
const filePath = 'src/tests/docs/image.png';
const url = `http://petstore.swagger.io/v2/pet/${petId}/uploadImage`;
try {
const formData = new FormData();
formData.append('file', fs.createReadStream(filePath));
const request = new OpenRequest({ method: Method.POST, url, formData });
const response = await request.execute();
} catch (error) {
throw new Error(error);
}
Using retry logic
const url = 'http://petstore.swagger.io/v2/pet/garbageId';
try {
const request = new OpenRequest({ url, rejectNon2xx: false, retryLogic: [{ retryLimit: 2, retryCondition: `response.statusCode === 404` }, { retryLimit: 2, retryCondition: `JSON.stringify(response.body).includes('java.lang.NumberFormatException')` }] });
const response = await request.execute();
} catch (error) {
throw new Error(error);
}