Advanced Techniques with @briklab/reqor
Once you’re comfortable with the basics, these patterns help you tailor reqor to complex applications.
Custom middleware
Middlewares can modify requests, short‑circuit responses, or implement retries yourself.
ts
import reqor from "@briklab/reqor";
function authMiddleware(token: string) {
return {
before: (context) => {
context.init.headers = { ...(context.init.headers || {}), Authorization: `Bearer ${token}` };
}
};
}
reqor.use(authMiddleware("secret-token"));
// all subsequent requests include auth header
await reqor("/private").get();Local middleware can be used for a single request. You can also short‑circuit and return a mocked response:
ts
await reqor("/cache")
.use({
before: (context) => {
// modify request if needed
},
after: (response, context) => {
if (cache.has(context.url)) {
return cache.get(context.url); // skip network entirely
}
cache.set(context.url, response);
return response;
}
})
.get();Global configuration
reqor exposes static helpers for setting default headers or global retry logic:
ts
reqor.headers().set("X-App","myapp");
reqor.use({
before: (context) => {
console.log("requesting", context.url);
}
});Clearing and resetting
ts
reqor.clearMiddlewares();
reqor.headers().clear();Error handling
If a fetch fails after all retries the promise rejects with the Response object. Use try/catch or attach .catch().
ts
try {
await reqor("/bad").retry(2).get();
} catch (err) {
console.error("request failed", err);
}You can also inspect err.status/err.body to make decisions.
Using fetchLater
Reqor supports fetchLater to obtain a ResponseLater and resolve manually.
ts
import { fetchLater } from "@briklab/reqor";
const later = await reqor("/slow").get({ later: true });
// do other work...
const res = await later.resolve();
console.log(res.status);Tips and gotchas
- Calling the same fluent method twice overwrites the previous value.
- Options passed to
get()/post()take precedence over fluent setters. - Middleware order is: global first, then local, then options-provided.
