Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dck/rescript-ky) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
rescript-ky
ReScript bindings for ky HTTP client (targeted version : ~1.2.0)
Setup
- Install the module
bun install @dck/rescript-ky
# or
yarn install @dck/rescript-ky
# or
npm install @dck/rescript-ky- Add it to your
rescript.jsonconfig
{
"bsc-dependencies": ["@dck/rescript-ky"]
}Usage
The functions can be accessed through Ky module.
type data = {anything: string}
type errorPayload = {
code: string
}
let fetchSomething = async () => {
try {
let response: data = await Ky.fetch("test", {prefixUrl: "https://fake.com", method: GET})->Ky.Response.jsonFromPromise()
// handle response data
} catch {
| JsError(err) => {
let errorResponse = (err->Ky.unkownToError).response->Option.getExn
let errorData: errorPayload = await errorResponse->Ky.Response.json()
switch (errorData.code) {
| "CODE_1" => () // do something
| _ => ()
}
}
}
}Use shortcut method :
type data = {anything: string}
let fetchSomething = async () => {
try {
let response: data = await Ky.get("test", {prefixUrl: "https://fake.com"})->Ky.Response.jsonFromPromise()
// handle response data
} catch {
| JsError(err) => {
// handle err
Js.log(err)
}
}
}Instance
let instance = Ky.Instance.create({prefixUrl: "https://fake.com"})
type data = {anything: string}
let fetchSomething = async () => {
try {
let response: data = await (instance->Ky.Instance.get("test"))->Ky.Response.jsonFromPromise()
// handle response data
} catch {
| JsError(err) => {
// handle err
Js.log(err)
}
}
}Extend
let instance = Ky.Instance.create({prefixUrl: "https://fake.com"})
let extendedInstance = instance->Ky.Instance.extend({
prefixUrl: `${mockBasePath}/extend`,
headers: Ky.Headers.fromObj({
"custom-header": "test",
}),
})
type data = {anything: string}
let fetchSomething = async () => {
try {
let response: data = await (extendedInstance->Ky.Instance.get("test"))->Ky.Response.jsonFromPromise()
// handle response data
} catch {
| JsError(err) => {
// handle err
Js.log(err)
}
}
}