@janiscommerce/request v2.0.2
Request Module
📦 Installation
const { Request } = require('@janiscommerce/request');
:warning: Migration :warning: |
---|
If you are using v1.x see the migration guide |
:hammer: Usage
Request example
Making a custom request.
:warning: When the response status code is greater than or equal to 400 throws an error.
try {
const { statusCode, body } = await Request.get('https://reqres.in/api/users');
console.log(`Status code: ${statusCode}`); // Status code: 200
console.log(body); // { message: 'OK' }
} catch(error){
console.log(error)
/*
{
name: 'RequestError'
message: 'Request failed: internal error',
code: 1
}
*/
}
RequestSafe example
Making a custom safe request
:warning: If you want to handle the error safely. NOT THROW
const { RequestSafe } = require('@janiscommerce/request');
const { statusCode, body } = await RequestSafe.get('https://reqres.in/api/users');
console.log(`Status code: ${statusCode}`); // Status code: 500
console.log(body); // { message: 'internal error' }
⚙️ Classes
📄 Structures
Request
Simple static class to make external request using http and http node core packages
Kind: global class
- .defaultHeaders
- .httpMethod
- .endpoint
- .headers
- .body
- .statusCode
- .responseBody
- .post(endpoint, body, [options]) ⇒ Promise.<RequestResponse>
- .put(endpoint, body, [options]) ⇒ Promise.<RequestResponse>
- .patch(endpoint, body, [options]) ⇒ Promise.<RequestResponse>
- .delete(endpoint, [options]) ⇒ Promise.<RequestResponse>
- .call(options) ⇒ Promise.<RequestResponse>
Request.lastRequest
Kind: static property of Request
Read only: true
Request.lastResponse
Kind: static property of Request
Read only: true
Request.get(endpoint, options) ⇒ Promise.<RequestResponse>
Kind: static method of Request
Param | Type | Default |
---|---|---|
endpoint | string | |
options | RequestOptions | {} |
Request.post(endpoint, body, options) ⇒ Promise.<RequestResponse>
Kind: static method of Request
Param | Type | Default |
---|---|---|
endpoint | string | |
body | any | |
options | RequestOptions | {} |
Request.put(endpoint, body, options) ⇒ Promise.<RequestResponse>
Kind: static method of Request
Param | Type | Default |
---|---|---|
endpoint | string | |
body | any | |
options | RequestOptions | {} |
Request.patch(endpoint, body, options) ⇒ Promise.<RequestResponse>
Kind: static method of Request
Param | Type | Default |
---|---|---|
endpoint | string | |
body | any | |
options | RequestOptions | {} |
Request.delete(endpoint, options) ⇒ Promise.<RequestResponse>
Kind: static method of Request
Param | Type | Default |
---|---|---|
endpoint | string | |
options | RequestOptions | {} |
Request.call(options) ⇒ Promise.<RequestResponse>
Kind: static method of Request
Param | Type |
---|---|
options | CallOptions |
PathTemplate : string
A string path. Supports templating in "{variable}" format. IE: "/api/users/{userId}/contacts"
Kind: global typedef
CallOptions : object
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
headers | object | Custom headers on request. Define as { headerName: headerValue } |
pathParams | object | Replace variables in path declared as "{variable}". Define structure as { variableNameInPath: valueForReplace } |
queryParams | object | Query parameters / filters on request. Define structure as { queryVariableName: value } |
path | PathTemplate | The request path |
strictMode | boolean | When this flag is set as true, the request response content-type should be application/json or error will thrown |
endpoint | string | The request endpoint. Protocol and path are optionals. When no protocol specified, http goes by default. Supports *PathTemplate |
method | string | The request method. 'GET' is set by default |
body | any | The request body (if request method accepts it). Can be a valid object, Array, string, or any serializable type. |
RequestOptions : object
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
headers | object | Custom headers on request. Define as { headerName: headerValue } |
pathParams | object | Replace variables in path declared as "{variable}". Define structure as { variableNameInPath: valueForReplace } |
queryParams | object | Query parameters / filters on request. Define structure as { queryVariableName: value } |
path | PathTemplate | The request path |
strictMode | boolean | When this flag is set as true, the request response content-type should be application/json or error will thrown |
RequestResponse : object
Kind: global typedef Properties
Name | Type | Description |
---|---|---|
complete | boolean | Flag that represents that if operation was completed |
aborted | boolean | Flag that represents that if operation was aborted |
httpVersion | string | String with http protocol version of the response sent |
rawHeaders | Array.<String> | Request headers as array of srings |
headers | object | Response headers. Formatted as { headerName: headerValue } |
statusCode | number | Response status code |
statusMessage | string | Response status message |
body | any | Response body. Can be a valid object, Array, string, or any serializable type. |
rawBody | Array | Response body without serialization. |
originRequest | CallOptions | Used to make another request based on the origin request. Ie: For retry the same request |
:running: Migration
Migration from v1.x to v2
Now Request
, in addition to being required in another way, throws an error if the response status code if >= 400
If you want to keep the functionality of v1.x must require and change RequestSafe
to your old Request
as follows
// old way to require the package
const Request = require('@janiscommerce/request');
// new way
const { RequestSafe } = require('@janiscommerce/request');