A high-performance, cross-platform functional HTTP request handler library for building web clients and orchestrating requests in F#.
Oryx is a functional HTTP request handler library for .NET, specifically designed for F# developers. It provides a composable middleware for building web clients, orchestrating HTTP requests, and creating SDKs for various APIs, with a focus on performance and clean functional design.
F# developers building HTTP clients, SDKs, or needing to orchestrate complex web request flows in .NET applications, particularly those working with REST APIs or microservices.
Developers choose Oryx for its functional, composable approach to HTTP handling, which simplifies error management, request orchestration, and serialization while maintaining high performance and cross-platform compatibility.
.NET Cross platform and highly composable middleware for building web request handlers in F#
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
HTTP handlers are composable using the pipe operator, allowing developers to build complex request pipelines like Lego bricks, inspired by Giraffe and AsyncRx for maintainable code.
Provides operators like `concurrent`, `sequential`, and `chunk` for easy orchestration of multiple requests, enabling efficient bulk operations with configurable parallelism.
Supports catching, skipping, and custom error handling with exceptions, including panic errors that bypass catch blocks, making it robust for complex workflows.
Integrates with System.Text.Json, Newtonsoft.Json, Thoth.Json.Net, and Google.Protobuf, offering flexibility in content handling for various API requirements.
Configurable logging via ILogger and custom metrics emission through IMetrics, useful for monitoring request performance, errors, and debugging in production.
Heavily reliant on F# language features and functional paradigms, making it inaccessible for C#-focused teams without F# expertise or those preferring object-oriented approaches.
Requires understanding of functional composition, HttpHandler concepts, and F# syntax, which can be daunting for developers new to functional programming or coming from imperative backgrounds.
Version upgrades from v1 to v5 have introduced significant API changes, as documented in the README, which can disrupt existing codebases and require migration efforts.
Compared to mainstream .NET HTTP libraries like HttpClient or Refit, Oryx has a smaller user base and fewer third-party extensions, potentially limiting support and resources.