FsHttp is a .Net HTTP client library for C# and F#. It aims for describing and executing HTTP requests in convenient ways that can be used in production and interactive environments.
The design principle behind FsHttp is:
Specify common HTTP requests in a most convenient and readable way, while still being able to access the underlying .Net Http representations for covering unusual cases.
FsHttp is developed and maintained by @ronaldschlenker and @dawedawe. Feel free to leave us a message.
Want to help keep FsHttp alive? Then help keep F# and its ecosystem alive by supporting one of the following developers:
- @edgarfgp. Why? E.g. for "Amplifying F#", for bringing people together, for his support and his work in the F# community.
- @TheAngryByrd. Why? E.g. for maintaining Ionidem and many, many more.
- @AngelMunoz. Why? E.g. for his work in Fable (The F# to JS compiler), his passion and support.
- @dawedawe and @nojaf. Why? E.g. for Fantomas and their support in the F# community.
- @PawelStadnicki. Why? E.g. for his attempt to push F# forward in data science.
For sure, there are many more. If you think someone should appear on that list, leave us a message!
An example in F#:
#r "nuget: FsHttp"
open FsHttp
http {
POST "https://reqres.in/api/users"
CacheControl "no-cache"
body
jsonSerialize
{|
name = "morpheus"
job = "leader"
|}
}
|> Request.send
An example in C#:
#r "nuget: FsHttp"
using FsHttp.CSharp;
await "https://reqres.in/api/users".Post()
.CacheControl("no-cache")
.Body()
.JsonSerialize(new
{
name = "morpheus",
job = "leader"
}
)
.SendAsync();
- 📖 Please see FsHttp Documentation site for a detailed documentation.
- 🧪 In addition, have a look at the Integration Tests that show various library details.
- See https://www.nuget.org/packages/FsHttp#release-body-tab
- For different upgrade paths, please read the Migrations section in the docu.
Please see FsHttp on GitHub.
.Net SDK:
You need to have the latest .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 powershell files located in the repo root:
./test.ps1
: Runs all tests (sources in./src/Tests
).- You can pass args to this task. E.g. for executing only some tests:
./test.ps1 --filter Name~'Response Decompression'
- You can pass args to this task. E.g. for executing only some tests:
./docu.ps1
: Rebuilds the FsHttp documentation site (sources in./src/docs
; output goes to./docs
)../docu-watch.ps1
: Run it if you are working on the documentation sources, and want to see the result in a browser../publish.ps1
: 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
- Parts of the code is taken from the HTTP utilities of FSharp.Data.
- Credits to all critics, supporters, contributors, promoters, users, and friends.