not really known
Go to file
2022-09-02 11:59:12 +01:00
.github/workflows Cleanup and polishing 2022-08-19 16:42:54 +01:00
src Remove unused imports 2022-09-02 11:59:12 +01:00
test Make response headers a map 2022-09-02 11:59:12 +01:00
.gitignore Initial commit 2022-08-18 10:47:23 +01:00
bower.json Update bower.json 2022-08-20 19:51:19 +01:00
CHANGELOG.md Make response headers a map 2022-09-02 11:59:12 +01:00
LICENSE Add license 2022-08-20 20:17:40 +01:00
packages.dhall Pin core v4.0.4 2022-08-20 19:50:24 +01:00
README.md Useless update 2022-08-26 14:10:09 +01:00
spago.dhall Fix missing strings dependency 2022-09-02 11:59:12 +01:00
test.dhall Cleanup and polishing 2022-08-19 16:42:54 +01:00

purescript-fetch

High-level library for the WHATWG Fetch Living Standard.

purescript-fetch works on browser and Node.js. Running on Node.js requires version >17.5, see # Usage.

Installation

spago install fetch

Usage

Note: Node.js <17.5 is not supported. Node.js >=17.5 and <18.0 requires the --experimental-fetch node options:

NODE_OPTIONS=--experimental-fetch spago run

Node.js >18.0 you don't need to set the --experimental-fetch node option.

Perform a simple GET request:

fetch "https://httpbin.org/get" {} >>= _.text

Perform a POST request:

do
    { status, text } <- fetch "https://httpbin.org/post"
        { method: POST
        , body: """{"hello":"world"}"""
        , headers: { "Content-Type": "application/json" }
        }
    responseText <- text

Json parsing

fetch works well with yoga-json and argonaut, use our little helper libraries.

yoga-json

spago install fetch-yoga-json
type HttpBinResponse = { json :: { hello :: String } }

main :: Effect Unit
main = launchAff_ do
  { json } <- fetch "https://httpbin.org/post"
    { method: POST
    , body: writeJSON { hello: "world" }
    , headers: { "Content-Type": "application/json" }
    }
  { json: { hello: world } } :: HttpBinResponse <- fromJSON json
  log world

argonaut

spago install fetch-argonaut
type HttpBinResponse = { json :: { hello :: String } }

do
  { json } <- fetch "https://httpbin.org/post"
    { method: POST
    , body: toJsonString { hello: "world" }
    , headers: { "Content-Type": "application/json" }
    }
  { json: { hello: world } } :: HttpBinResponse <- fromJson json
  log world