Skip to content

fsprojects/FsHttp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f7a1de3 · Jan 12, 2025
Oct 3, 2024
Jan 12, 2025
Sep 26, 2024
Dec 28, 2023
Aug 7, 2024
Dec 1, 2024
Dec 21, 2024
Jul 22, 2023
Sep 3, 2023
Sep 26, 2024
Dec 3, 2024
Dec 28, 2023
Oct 5, 2018
Jan 12, 2025
Sep 27, 2024
Sep 26, 2024
Dec 24, 2023
Sep 26, 2024
Sep 26, 2024
Nov 27, 2023
Sep 26, 2024
Sep 26, 2024

Repository files navigation

FsHttp

Build & Tests NuGet NuGet Downloads

logo

FsHttp 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


FsHttp ❤️ PXL-Clock

Allow us a bit of advertising for our PXL-Clock! It's a fun device, made with ❤️ - and it's programmable almost as easy as you write requests with FsHttp :)

image

Find out more info on the PXL-Clock Discord Server or check out the PXL-Clock Repo on GitHub.

Join the PXL-Clock Community on Discord

Join Our Discord


Documentation

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

#r "nuget: FsHttp"

using FsHttp;

await Http
    .Post("https://reqres.in/api/users")
    .CacheControl("no-cache")
    .Body()
    .JsonSerialize(new
        {
            name = "morpheus",
            job = "leader"
        }
    )
    .SendAsync();

Release Notes / Migrating to new versions

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'
  • ./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.

Credits

  • Parts of the code were taken from the HTTP utilities of FSharp.Data.
  • Credits to all critics, supporters, contributors, promoters, users, and friends.