@atomictech/httpie
v1.10.0
Published
Fork of MyUnisoft Node.js HTTP client that use Undici client
Downloads
3
Readme
📢 About
The package is inspired by lukeed httpie (The use is relatively similar). This package use new Node.js http client undici under the hood.
This fork is an opinionated version of handling request body, especially JSON ones, and that allow to properly delegate all other body types to undici
(like FormData
bodies, for example, that was not properly handled).
🔬 Features
- Automatically handles JSON requests (through a
json(bodyObj)
call) and responses. - Includes aliases for common HTTP verbs:
get
,post
,put
,patch
, anddel
. - Able to automatically detect domains and paths to assign the right Agent (use a LRU cache to avoid repetitive computation).
- Allows to use an accurate rate-limiter like
p-ratelimit
with thelimit
option. - Built-in retry mechanism with custom policies.
Thanks to undici:
- Support HTTP redirections with the
maxRedirections
argument. - Implement high-level API for undici stream and pipeline method.
- High performance (see benchmarks).
- Work well with newest Node.js API AbortController to cancel http request.
Light with seriously maintained dependencies:
🚧 Requirements
- Node.js version 14 or higher
🚀 Getting Started
This package is available in the Node Package Repository and can be easily installed with npm or yarn.
$ npm i @atomictech/httpie
# or
$ yarn add @atomictech/httpie
📚 Usage example
The MyUnisoft httpie client is very similar to lukeed httpie http client.
import * as httpie from "@atomictech/httpie";
try {
const { data } = await httpie.get("https://jsonplaceholder.typicode.com/posts");
console.log(data);
const response = await httpie.post("https://jsonplaceholder.typicode.com/posts", {
body: httpie.json({
title: "foo",
body: "bar",
userId: 1
})
});
console.log(response.statusCode);
console.log(response.statusMessage);
console.log(response.data);
}
catch (error) {
console.log(error.message);
console.log(error.statusCode);
console.log(error.headers);
console.log(error.data);
}
👀 For more examples of use please look at the root folder examples.
📜 API
Contributors ✨
Thanks goes to these wonderful people (emoji key):
License
MIT