FsHttp 13.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package FsHttp --version 13.2.0                
NuGet\Install-Package FsHttp -Version 13.2.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FsHttp" Version="13.2.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FsHttp --version 13.2.0                
#r "nuget: FsHttp, 13.2.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FsHttp as a Cake Addin
#addin nuget:?package=FsHttp&version=13.2.0

// Install FsHttp as a Cake Tool
#tool nuget:?package=FsHttp&version=13.2.0                

<p align="center"> <img src='https://raw.githubusercontent.com/fsprojects/FsHttp/master/docs/img/logo.png' alt='logo' width='300' /> </p>

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 @SchlenkR and @dawedawe. Feel free to leave us a message.

NuGet Badge build status

A Simple Example

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;

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

Documentation

Release Notes / Migrating to new versions

GitHub

Please see FsHttp on GitHub.

Building

.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'
  • ./docu.ps1: Rebuilds the FsHttp documentation site (sources in ./src/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.

Credits

  • Parts of the code is taken from the HTTP utilities of FSharp.Data.
  • Credits to all critics, supporters, contributors, promoters, users, and friends.
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (13)

Showing the top 5 NuGet packages that depend on FsHttp:

Package Downloads
Functional.SplinterBots.API

Package Description

FsHttp.FSharpData

FSharp.Data (JSON) integration package for FsHttp

FsHttp.NewtonsoftJson

JSON.Net (Newtonsoft.Json) integration package for FsHttp

Swate.Api

Dotnet library for easy access to Swate API.

Perla.PackageManager

A Library under the Perla umbrella. This package gives you a small set of APIs to interact with the JSPM Generator and Skypack API. Also, this library powers the package management + importmap features of Perla Dev Server.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
14.5.1 84,031 8/9/2024
14.5.0 151,496 3/5/2024
14.4.2 308 3/5/2024
14.4.1 73,097 2/5/2024
14.4.0 79,176 1/7/2024
14.2.0 832 1/5/2024
14.1.0 788 1/3/2024
14.0.0 629 1/2/2024
13.3.0 13,015 12/28/2023
13.2.0 613 12/28/2023
12.2.0-preview01 651 12/24/2023
12.1.0 2,766 11/27/2023
12.0.0 51,666 10/31/2023
11.0.0 48,865 8/5/2023
11.0.0-preview01 1,282 3/25/2023
10.0.0 195,888 11/25/2022
10.0.0-preview3 903 11/23/2022
10.0.0-preview2 1,115 11/12/2022
10.0.0-preview1 933 11/12/2022
9.1.2 32,076 6/5/2022
9.1.1 3,578 4/24/2022
9.1.0 1,734 4/19/2022
9.0.6 1,778 4/19/2022
9.0.5 1,783 4/14/2022
9.0.4 1,534 4/8/2022
9.0.3 1,418 4/8/2022
9.0.2 3,846 4/6/2022
9.0.1 1,338 4/5/2022
9.0.0 13,854 4/5/2022
8.0.1 8,422 3/6/2022
8.0.0 1,185 3/2/2022
7.0.0 41,517 12/13/2021
6.0.1 2,365 11/23/2021
6.0.0 1,011 11/22/2021
0.9.0 1,947 7/14/2019

v13.1.0
     - All `Response._TAsync` functions (task based) in F# require a CancellationToken now.
     
     v13.1.0
     - There's no more StartingContext, which means:
       we give up a little bit of safety here, for the sake of pre-configuring HTTP requests
       without specifying the URL. This is a trade-off we are willing to take.

     v12.2.0
     - added HttpMethods for better composability

     v12.1.0
     - net8.0

     v12.0.0
     - #137 / #102: Change the type for FsHttpUrl.additionalQueryParams from obj to string
     - Removed (auto opened) Async.await and Task.map/await
     - Moved (auto opened) Async.map to FsHttp.Helper.Async.map

     v11.1.0
     - #130 / #105: Add method for user-supplied cancellation token

     v11.0.0
     - #121 (Breaking change): Turning off debug logs in FSI (breaking change in signature / namespace)
     - #124: Support Repeating Query Parameters (thanks @DaveJohnson8080)
     - #106 (Breaking change): Allow filename metadata with other "parts" (thanks @dawedawe)
     - Breaking change: ContentTypeForPart custom operations should come after part definition
     - #104 (Breaking change): Automatic GZip response decompression per Default
     - Other breaking changes:
       - Removed `ContentTypeWithEncoding` and used optional `charset` parameter in `ContentType` overloads.
       - Renamed `byteArray` to `binary` in Dsl, DslCE and CSharp.
       - Caution (!!): Renamed `stringPart` to `textPart` and changed argument order for `name` and `value` in Dsl and DslCE.
       - Restructured types in Domain
       - `Helper` is a module instead of a namespace, and some things were moved.
       - All transformers in config are a list of transformers instead of a single item.
       - Removed `setHttpClient`. Please use `setHttpClientFactory` instead.
       - `setHttpClientFactory` takes a `Config` as input argument.

     -----------------------------
     -- Old release notes below --
     -----------------------------
     
     v7.0.0
     - #92: `expect` and `assert` pass through the original response instead of unit.

     v8.0.0
     - #93 (thanks @drhumlen): Changed content type 'text/json' to 'application/json'.
     - Http modules are always AutoOpen in both Dsl and DslCE.
     - No extra modules for builder methods.

     v8.0.1
     - #89: No more blocking requests using net5 with FSI.

     v9.0.0 / v9.0.1
     - Redefined builders (see README.md).
     - Many breaking changes (see "Migrations" sections in the docu).

     v9.0.2
     - Added JSON toArray functions
     - Fixed #99: Response.saveFile should create the directory if not present.

     v9.0.3
     - Supporting netstandard2.1 again.

     v9.0.4
     - Referenced lowest possible FSharp.Core and other referenced packages version.

     v9.0.5
     - Support for netstandard2.0.
     - New 'FsHttp.NewtonsoftJson' integration package.
     - More JSON functions and defaults config.

     v9.0.6
     - #100 - Removed FSI print messages.

     v9.1.0
     - Fixed naming inconsistency for 'Response.deserialize...' functions.
     - More C# JSON functions.

     v9.1.1
     - Fix: Using GlobalConfig.Json.defaultJsonSerializerOptions as default for jsonSerialize.

     v9.1.2
     - Fixed #103: FSI response printing and initialization doesn't work out of the box anymore.

     v10.0.0
     - .Net 7 support (thank you @Samuel-Dufour)
     - Breaking change: Corrected typo "guessMineTypeFromPath" -> "guessMimeTypeFromPath"
     - Breaking change: Module 'Helper', 'HelperInternal' and 'HelperAutos' refactored
     - #115: Remove print messages when downloading streams
     - Printing: Separate print functions for response and request via Request.print and Response.print
     - Printing: Default request (IToRequest) printing in FSI
     - Removed net5.0 targets in all projects
     - PrintHint.printDebugMessages: Moved to FsHttp.Helper.Fsi.logDebugMessages as a global switch
     - #113 - Config.timeoutInSeconds bug

     v10.1.0
     - #117: Escape string for query params values (by @maciej-izak - thank you)
     (!!) This can be seen as breaking change.
     - #112: Allow to add (multiple) headers (by @Samuel-Dufour - thank you)