Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/MyUnisoft/httpie
A modern and light Node.js http client 🐢🚀 (built with undici under the hood).
https://github.com/MyUnisoft/httpie
client http httpie node nodejs request undici
Last synced: 3 months ago
JSON representation
A modern and light Node.js http client 🐢🚀 (built with undici under the hood).
- Host: GitHub
- URL: https://github.com/MyUnisoft/httpie
- Owner: MyUnisoft
- License: mit
- Created: 2021-08-08T12:27:31.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-08-03T05:49:05.000Z (4 months ago)
- Last Synced: 2024-08-03T06:43:21.446Z (4 months ago)
- Topics: client, http, httpie, node, nodejs, request, undici
- Language: TypeScript
- Homepage:
- Size: 771 KB
- Stars: 14
- Watchers: 0
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
Httpie
A modern and light Node.js http client 🐢🚀.## 📢 About
The package is inspired by lukeed [httpie](https://github.com/lukeed/httpie) (The use is relatively similar). This package use new Node.js http client [undici](https://github.com/nodejs/undici) under the hood.
## 🔬 Features
- Automatically parse based on the `content-type`.
- Automatically decompress based on the `content-encoding`.
- Includes aliases for common HTTP verbs: `get`, `post`, `put`, `patch`, and `del`.
- 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 the `limit` option.
- Built-in retry mechanism with **custom policies**.
- Safe error handling with Rust-like [Result](https://github.com/OpenAlly/npm-packages/tree/main/src/result).Thanks to undici:
- Support [HTTP redirections](https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections) with the `maxRedirections` argument.
- Implement high-level API for undici **stream** and **pipeline** method.
- High performance (see [benchmarks](https://undici.nodejs.org/#/?id=benchmarks)).
- Work well with **newest** Node.js API [AbortController](https://nodejs.org/dist/latest-v16.x/docs/api/globals.html#globals_class_abortcontroller) to cancel http request.Light with seriously maintained dependencies:
![](./docs/images/nodesecure.PNG)
## 🚧 Requirements
- [Node.js](https://nodejs.org/en/) version 20 or higher## 🚀 Getting Started
This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).
```bash
$ npm i @myunisoft/httpie
# or
$ yarn add @myunisoft/httpie
```## 📚 Usage example
The MyUnisoft httpie client is very similar to lukeed httpie http client.
```js
import * as httpie from "@myunisoft/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: {
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);
}
```Since v2.0.0 you can also use the `safe` prefix API to get a `Promise>`
```ts
import * as httpie from "@myunisoft/httpie";const response = (await httpie.safePost("https://jsonplaceholder.typicode.com/posts", {
body: {
title: "foo",
body: "bar",
userId: 1
}
}))
.map((response) => response.data)
.mapErr((error) => new Error("a message here!", { cause: error.data }));
.unwrap();
```> 👀 For more examples of use please look at the root folder **examples**.
## 📜 API
- [Request API](./docs/request.md)
- [Retry API](./docs/retry.md)
- [Work and manage Agents](./docs/agents.md)## Error handling
Read the [error documentation](./docs/errors.md).
## Contributors ✨
[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
Gentilhomme
💻 📖 👀 🛡️ 🐛
PierreDemailly
💻 ⚠️
Yefis
💻 🐛
## License
MIT