From 837b4597e3fba888528e26d62889c8bb2b57546d Mon Sep 17 00:00:00 2001 From: David Chin Date: Wed, 27 Dec 2017 15:14:40 +1100 Subject: [PATCH] docs(common): CHECKOUT-2738 Update README with usage instructions --- README.md | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/README.md b/README.md index e69de29..28a049d 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,123 @@ +# RequestSender + +A simple library for sending HTTP requests. + +## Usage + +To send a HTTP request. + +```js +import { createRequestSender } from '@bigcommerce/request-sender'; + +const requestSender = createRequestSender(); + +// GET request +requestSender.get('/foobars') + .then(({ body }) => console.log(response.body)); + +// POST request +requestSender.post('/foobars', { body: { name: 'Foobar' } }) + .then(({ body }) => console.log(response.body)); +``` + +To cancel a pending request + +```js +import { createRequestSender, createTimeout } from '@bigcommerce/request-sender'; + +const timeout = createTimeout(100); +const requestSender = createRequestSender(); + +requestSender.get('/foobars', { timeout }) + .catch(({ status }) => console.log(status)); + +timeout.cancel(); +``` + +## API + +### createRequestSender() + +To create a new instance of `RequestSender`. + +### createTimeout(delay: number?) + +To create a new instance of `Timeout`. If `delay` is defined, the instance will automatically timeout after the specified period. Otherwise, it remains inactive until `complete()` is called. + +### RequestSender +#### sendRequest(url: string, options: RequestOptions): Promise +#### get(url: string, options: RequestOptions): Promise +#### post(url: string, options: RequestOptions): Promise +#### put(url: string, options: RequestOptions): Promise +#### patch(url: string, options: RequestOptions): Promise +#### delete(url: string, options: RequestOptions): Promise + +To submit a HTTP request using `GET`, `POST`, `PUT`, `PATCH` or `DELETE` method. Alternatively, you can call `sendRequest` and specify the request method as an argument. + +### Timeout +#### complete(): void; + +To manually complete a timeout. + +### RequestOptions +#### body: any? +Request payload. +Default: `null` + +#### headers: Object? +Request headers. +Default: `{ + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': 'application/json', +}` + +#### params: Object? +URL parameters. They get serialized as a query string. +Default: `null` + +#### method: string? +Request method. It's ignored if calling one of the convenience methods (`get`, `post` etc...). +Default: `GET` + +#### credentials: boolean? +Same as `XMLHttpRequest.withCredentials`. +Default: `true` + +#### timeout: Timeout? +Define if wish to timeout a request. +Default: `null` + +### Response + +#### body: any +Response body. +Default: `null` + +#### headers: Object +Response headers. +Default: `{}` + +#### status: number? +Response status code. Return `0` if the request is cancelled. +Default: `undefined` + +#### statusText: string? +Response status text. +Default: `undefined` + +## Development + +Some useful commands + +```sh +# To test +yarn test + +# To lint +yarn lint + +# To release +yarn release +``` + +For more commands, please see `package.json`