# Flows.rs: HTTP Requests & Responses
[](https://unlicense.org)
[](https://blog.rust-lang.org/2025/02/20/Rust-1.85.0/)
[](https://crates.io/crates/flows-http)
[](https://docs.rs/flows-http)
[](https://github.com/artob/awesome-fbp)
_"Τὰ πάντα ῥεῖ καὶ οὐδὲν μένει" — Heraclitus_
**Building blocks for flow-based HTTP requests & responses in Rust.**
This package is part of [Flows.rs], a growing shrink-wrap inventory of
standard, reusable dataflow blocks for common use cases.
> [!TIP]
> 🚧 _We are building in public. This is presently under heavy construction._
<br/>
<sub>
[[Features](#-features)] |
[[Prerequisites](#%EF%B8%8F-prerequisites)] |
[[Installation](#%EF%B8%8F-installation)] |
[[Examples](#-examples)] |
[[Reference](#-reference)] |
[[Development](#%E2%80%8D-development)]
</sub>
## ✨ Features
- Provides components for [flow-based programming] (FBP) based on [Tokio].
- Enables dataflow systems through reusable components called blocks.
- Built on the dataflow primitives provided by the [Async-Flow] project.
- Supports opting out of any feature using comprehensive feature flags.
- Adheres to the Rust API Guidelines in its [naming conventions].
- Cuts red tape: 100% free and unencumbered public domain software.
## 🛠️ Prerequisites
- [Rust](https://rust-lang.org) 1.85+ (2024 edition)
## ⬇️ Installation
### Installation via Cargo
```bash
cargo add flows-http
```
## 👉 Examples
### Importing the Library
```rust
use flows_http::*;
```
## 📚 Reference
[docs.rs/flows-http](https://docs.rs/flows-http)
### Packages
| [flows](https://github.com/artob/flows.rs/tree/master/lib/flows) | Flow-based programming (FBP). | [](https://crates.io/crates/flows) | [](https://docs.rs/flows) |
| [flows-arrow](https://github.com/artob/flows.rs/tree/master/lib/flows-arrow) | Flow-based data processing with Apache Arrow. | [](https://crates.io/crates/flows-arrow) | [](https://docs.rs/flows-arrow) |
| [flows-audio](https://github.com/artob/flows.rs/tree/master/lib/flows-audio) | Flow-based audio processing. | [](https://crates.io/crates/flows-audio) | [](https://docs.rs/flows-audio) |
| [flows-datafusion](https://github.com/artob/flows.rs/tree/master/lib/flows-datafusion) | Flow-based query processing with Apache DataFusion. | [](https://crates.io/crates/flows-datafusion) | [](https://docs.rs/flows-datafusion) |
| [flows-derive](https://github.com/artob/flows.rs/tree/master/lib/flows-derive) | Derive macros for flow-based programming (FBP). | [](https://crates.io/crates/flows-derive) | [](https://docs.rs/flows-derive) |
| [flows-dns](https://github.com/artob/flows.rs/tree/master/lib/flows-dns) | Flow-based DNS resolution. | [](https://crates.io/crates/flows-dns) | [](https://docs.rs/flows-dns) |
| [flows-hash](https://github.com/artob/flows.rs/tree/master/lib/flows-hash) | Flow-based cryptographic hashing. | [](https://crates.io/crates/flows-hash) | [](https://docs.rs/flows-hash) |
| [flows-http](https://github.com/artob/flows.rs/tree/master/lib/flows-http) | Flow-based HTTP requests & responses. | [](https://crates.io/crates/flows-http) | [](https://docs.rs/flows-http) |
| [flows-image](https://github.com/artob/flows.rs/tree/master/lib/flows-image) | Flow-based image processing. | [](https://crates.io/crates/flows-image) | [](https://docs.rs/flows-image) |
| [flows-io](https://github.com/artob/flows.rs/tree/master/lib/flows-io) | Flow-based I/O readers & writers. | [](https://crates.io/crates/flows-io) | [](https://docs.rs/flows-io) |
| [flows-json](https://github.com/artob/flows.rs/tree/master/lib/flows-json) | Flow-based JSON encoding & decoding. | [](https://crates.io/crates/flows-json) | [](https://docs.rs/flows-json) |
| [flows-math](https://github.com/artob/flows.rs/tree/master/lib/flows-math) | Flow-based mathematical operations. | [](https://crates.io/crates/flows-math) | [](https://docs.rs/flows-math) |
| [flows-mdns](https://github.com/artob/flows.rs/tree/master/lib/flows-mdns) | Flow-based mDNS discovery. | [](https://crates.io/crates/flows-mdns) | [](https://docs.rs/flows-mdns) |
| [flows-pubsub](https://github.com/artob/flows.rs/tree/master/lib/flows-pubsub) | Flow-based publish/subscribe. | [](https://crates.io/crates/flows-pubsub) | [](https://docs.rs/flows-pubsub) |
| [flows-rand](https://github.com/artob/flows.rs/tree/master/lib/flows-rand) | Flow-based random number generation. | [](https://crates.io/crates/flows-rand) | [](https://docs.rs/flows-rand) |
| [flows-text](https://github.com/artob/flows.rs/tree/master/lib/flows-text) | Flow-based text processing. | [](https://crates.io/crates/flows-text) | [](https://docs.rs/flows-text) |
| [flows-video](https://github.com/artob/flows.rs/tree/master/lib/flows-video) | Flow-based video processing. | [](https://crates.io/crates/flows-video) | [](https://docs.rs/flows-video) |
### Integrations
TBD
### Glossary
- **System**: A collection of blocks that are connected together.
Systems are the top-level entities in dataflow programs.
- **Block**: An encapsulated system component that processes messages.
Blocks are the autonomous units of computation in a system.
- **Port**: A named connection point on a block that sends or receives
messages. Ports are the only interfaces through which blocks communicate
with each other.
- **Message**: A unit of data that flows between blocks in a system, from port
to port. Any Rust type that implements the `Send + Sync + 'static` traits can
be used as a message.
## 👨💻 Development
```bash
git clone https://github.com/artob/flows.rs.git
```
---
[](https://x.com/intent/post?url=https://github.com/artob/flows.rs&text=Flows.rs)
[](https://reddit.com/submit?url=https://github.com/artob/flows.rs&title=Flows.rs)
[](https://news.ycombinator.com/submitlink?u=https://github.com/artob/flows.rs&t=Flows.rs)
[](https://www.facebook.com/sharer/sharer.php?u=https://github.com/artob/flows.rs)
[](https://www.linkedin.com/sharing/share-offsite/?url=https://github.com/artob/flows.rs)
[Async-Flow]: https://github.com/artob/async-flow
[Flows.rs]: https://github.com/artob/flows.rs
[Tokio]: https://tokio.rs
[flow-based programming]: https://jpaulm.github.io/fbp/
[naming conventions]: https://rust-lang.github.io/api-guidelines/naming.html