Axios bindings for Bucklescript.
$ yarn add bs-axios
or
$ npm install --save bs-axios
bsconfig.json
See usage examples in examples folder:
Js.Promise.(
Axios.get("/user?ID=12345")
|> then_((response) => resolve(Js.log(response##data)))
|> catch((error) => resolve(Js.log(error)))
);
let _ =
let open Js.Promise in
((Axios.get "/user?ID=12345") |>
(then_ (fun response -> resolve (Js.log (## response data)))))
|> (catch (fun error -> resolve (Js.log error)))
Js.Promise.(
Axios.post("/user")
|> then_((response) => resolve(Js.log(response##data)))
|> catch((error) => resolve(Js.log(error)))
);
let _ =
let open Js.Promise in
((Axios.post "/user") |>
(then_ (fun response -> resolve (Js.log (## response data)))))
|> (catch (fun error -> resolve (Js.log error)))
let user = {
"username": "michel",
"password": "12345678"
};
Js.Promise.(
Axios.postData("/auth", {user})
|> then_((response) => resolve(Js.log(response##data)))
|> catch((error) => resolve(Js.log(error)))
);
let user = [%bs.obj { username = "michel"; password = "12345678" }]
let _ =
let open Js.Promise in
((Axios.postData "/auth" user) |>
(then_ (fun response -> resolve (Js.log (## response data)))))
|> (catch (fun error -> resolve (Js.log error)))
Js.Promise.(
Axios.all2((Axios.get("/users/1"), Axios.get("/users/1/friends")))
|> then_(((user, friends)) => resolve(Js.log2(user##data, friends##data)))
|> catch((error) => resolve(Js.log(error)))
);
let _ =
let open Js.Promise in
((Axios.all2 ((Axios.get "/users/1"), (Axios.get "/users/1/friends"))) |>
(then_
(fun (user,friends) ->
resolve (Js.log2 (## user data) (## friends data)))))
|> (catch (fun error -> resolve (Js.log error)))
You can create a new instance of axios with a custom config.
open Axios;
let inst = Instance.create(makeConfig(~baseURL="https://example.com", ()));
Js.Promise.(Instance.get(inst, "/") |> then_((resp) => resolve(Js.log(resp##data))));
open Axios
let inst = Instance.create (makeConfig ~baseURL:"https://example.com" ())
let _ =
let open Js.Promise in
(Instance.get inst "/") |>
(then_ (fun resp -> resolve (Js.log (## resp data))))
external promiseErrorToJsObj : Js.Promise.error => Js.t('a) = "%identity";
Js.Promise.(
Instance.get(inst, "/")
|> then_(resp => resolve(Belt.Result.Ok(resp)))
|> catch(error => {
let error = error |> promiseErrorToJsObj;
Js.log(error##response##status);
resolve(Belt.Result.Error(error));
})
);
external promiseErrorToJsObj : Js.Promise.error -> 'a Js.t = "%identity"
let _ =
let open Js.Promise in
((Instance.get inst "/") |>
(then_
(fun resp -> resolve ((Belt.Result.Ok (resp))[@explicit_arity ]))))
|>
(catch
(fun error ->
let error = error |> promiseErrorToJsObj in
Js.log (## (## error response) status);
resolve ((Belt.Result.Error (error))[@explicit_arity ])))
let headers = Axios.Headers.fromObj({"Content-type": "application/json"});
Axios.getc("https://example.com", Axios.makeConfig(~headers, ()));
let headersDict =
Js.Dict.(
{
let dict = empty();
dict->set("Content-type", "application/json");
dict;
}
);
let headers = Axios.Headers.fromDict(headersDict);
Axios.getc("https://example.com", Axios.makeConfig(~headers, ()));
967: syntax error, consider adding a `;' before
Providing custom Node.js HTTP Agent
allows for configuring connection persistence and reuse. For secure connections,
HTTPS Agent
allows security related
configuration to be provided.
let httpsAgent =
Axios.Agent.Https.(config(~rejectUnauthorized=false, ()) |> create);
Axios.getc(
"https://insecure-example.com",
Axios.makeConfig(~httpsAgent, ()),
);
let httpsAgent =
let open Axios.Agent.Https in
(config ~rejectUnauthorized:false ()) |> create
let _ =
Axios.getc "https://insecure-example.com" (Axios.makeConfig ~httpsAgent ())