A lightweight HTTP client library for ReScript, designed to be used immediately.
open Http
type page = {
data: array<string>,
page: int,
limit: int,
total: int,
}
let url = "..."
let page: result<page, int> =
await url
->from_url
->set_params({"page": 1, "limit": 20})
->get
- Based on JavaScript's Fetch API
- Easily create query strings and bodies using the Object type.
- Simple to use with Pipe (->).
npm install rescript-http
Then add rescript-http
to bs-dependencies
in your bsconfig.json
.
{
"bs-dependencies": ["rescript-http"],
"bsc-flags": ["-open RescriptHttp"] // optional
}
Takes a URL and creates a Request object.
" ... " -> from_url
Takes an object and creates query strings.
" ... " -> from_url -> set_params({ "page": 1, "limit": 20 })
Takes an object and creates headers.
" ... " -> from_url -> add_headers({ "Authorization": " ... " })
Takes an object and creates a body.
" ... " -> from_url -> set_body({ "name": " ... " })
Sends a request using the Request object and returns a JSON response.
let response:result<data,int> = await " ... " -> from_url -> get
Sends a request using the Request object and returns a JSON response.
let response:result<data,int> = await " ... " -> from_url -> post
Sends a request using the Request object and returns a JSON response.
let response:result<data,int> = await " ... " -> from_url -> put
Sends a request using the Request object and returns a JSON response.
let response:result<data,int> = await " ... " -> from_url -> patch
Sends a request using the Request object and returns a JSON response.
let response:result<data,int> = await " ... " -> from_url -> delete
Allows the use of middleware.
let logger_middleware = next => async request => {
Console.log("request", request)
await next(request)
}
" ... " -> from_url -> use(logger_middleware)