FsHttp
FsHttp ("Full Stack HTTP") is a "hackable HTTP client" that offers a legible style for the basics while still affording full access to the underlying HTTP representations for covering unusual cases. It's the best of both worlds: Convenience and Flexibility.
- Use it as a replacement for
.http
files, VSCode's REST client, Postman, and other tools as an interactive and programmable playground for HTTP requests. - Usable as a production-ready HTTP client for applications powered by .NET (C#, VB, F#).
๐ Postman? โค๏ธ FsHttp! https://youtu.be/F508wQu7ET0
Documentation
- ๐ Please see FsHttp Documentation site for detailed documentation.
- ๐งช In addition, have a look at the Integration Tests that show various library details.
F# syntax example
#r "nuget: FsHttp"
open FsHttp
http {
POST "https://reqres.in/api/users"
CacheControl "no-cache"
body
jsonSerialize
{|
name = "morpheus"
job = "leader"
|}
}
|> Request.send
C# syntax example
|
Release Notes / Migrating to new versions
- See https://www.nuget.org/packages/FsHttp#release-body-tab
- For different upgrade paths, please read the Migrations docs section.
Building
*.Net SDK:*
You need to have a recent .NET SDK installed, which is specified in ./global.json
.
Build Tasks
There is a F# build script (./build.fsx
) that can be used to perform several build tasks from command line.
For common tasks, there are bash scripts located in the repo root:
-
./test.sh
: Runs all tests (sources in./src/Tests
).-
You can pass args to this task. E.g. for executing only some tests:
./test.sh --filter Name~'Response Decompression'
-
You can pass args to this task. E.g. for executing only some tests:
./docu.sh
: Rebuilds the FsHttp documentation site (sources in./src/docs
)../docu-watch.sh
: Run it if you are working on the documentation sources, and want to see the result in a browser.-
./publish.sh
: Publishes all packages (FsHttp and it's integration packages for Newtonsoft and FSharp.Data) to NuGet.- Always have a look at
./src/Directory.Build.props
and keep the file up-to-date.
- Always have a look at
Credits
- Parts of the code were taken from the HTTP utilities of FSharp.Data.
- Credits to all critics, supporters, contributors, promoters, users, and friends.
namespace FsHttp
Multiple items
static member HttpBuilder.http: HeaderContext
--------------------
property HttpBuilder.http: HeaderContext with get
static member HttpBuilder.http: HeaderContext
--------------------
property HttpBuilder.http: HeaderContext with get
custom operation: POST (string)
Calls IRequestContext.Post
custom operation: CacheControl (string)
Calls IRequestContext.CacheControl
<summary> Used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain </summary>
<summary> Used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain </summary>
custom operation: body
Calls IRequestContext.Body
<summary> An explicit transformation from a previous context to allow for describing the request body. </summary>
<summary> An explicit transformation from a previous context to allow for describing the request body. </summary>
custom operation: jsonSerialize ('a)
Calls IRequestContext.JsonSerialize
Multiple items
module Request from FsHttp.Print
--------------------
module Request from FsHttp
--------------------
type Request = { header: Header content: BodyContent config: Config printHint: PrintHint }
module Request from FsHttp.Print
--------------------
module Request from FsHttp
--------------------
type Request = { header: Header content: BodyContent config: Config printHint: PrintHint }
val send: request: IToRequest -> Response
<summary> Sends a request synchronously. </summary>
<summary> Sends a request synchronously. </summary>