request-lit
v2.0.0
Published
Small Promise based HTTP client
Downloads
45
Readme
request-lit
Small Promise based HTTP client using the browser's native [Fetch API][fetch], which is supported in all modern browsers and polyfilled by most tools including Next.js or Create React App.
Install
$ npm install request-lit
Example
GET request
import { request } from 'request-lit';
(async () => {
const res = await request.get('https://jsonplaceholder.typicode.com/todos/1');
const data = await res.json();
console.log(data);
// => { userId: 1, id: 1, title: 'delectus aut autem', completed: false }
})();
POST request
import { request } from 'request-lit';
(async () => {
await request.post('https://jsonplaceholder.typicode.com/todos', {
json: { userId: 1, title: 'delectus aut autem', completed: false },
});
})();
Error handling
If the server responds with an error status code, the promise will be rejected
with a ResponseError
instance. The ResponseError
instance has a response
property that contains the response object.
import { request, ResponseError } from 'request-lit';
(async () => {
try {
const res = await request.get(
'https://jsonplaceholder.typicode.com/todos/1',
);
const todo = await res.json();
} catch (err) {
if (err instanceof ResponseError) {
switch (err.response.status) {
case 400:
/* Handle */ break;
case 401:
/* Handle */ break;
case 404:
/* Handle */ break;
case 500:
/* Handle */ break;
default:
/* Handle */ break;
}
}
throw new Error('Unknown fetch error');
}
})();
API
The API is similar to the native fetch
API, with some minor differences.
Consult the native fetch documentation
for more information.
The differences are:
- If you pass a
json
key in theoptions
object, it will be stringified and set as the request body. In addition theContent-Type
header will be set toapplication/json
. See the POST request example above. - If you pass a
validateStatus
function in theoptions
object, it will be used to determine if the status code is considered valid.
Request Method Alias
This library also provides pre-bound method aliases:
request.get(resource, options?)
request.post(resource, options?)
request.put(resource, options?)
request.patch(resource, options?)
request.delete(resource, options?)
request.options(resource, options?)
Development
[1] Install dependencies
$ npm install
[2] Validate setup
$ ./Taskfile.sh validate
[3] Start development by running tests in watch-mode
$ ./Taskfile.sh test -w
## License
[MIT](./LICENSE)