A simple http library for web client
npm install @rochismo/pesterjavascript
import { Pester } from '@rochismo/pester';
// I don't know why you need to re-bind it
const pesterConfig = {
/**
* This will automatically call response.json(),
* you won't have to specify manually upon it's call (shown later)
*/
treatEverythingAsJson: true,
/**
* This sets the header Content-Type to application/json,
* if it's not set, or set to false the header will be set to form data
*/
sendsJson: true,
/**
* This sets the url that the library will point to (defaults to "/")
*/
baseUrl: "http:/localhost:3000"
}
const instance = Pester.create(window.fetch.bind(window), pesterConfig)
instance.interceptors.addRequestInterceptor({
callback(data) {
// You can access the following properties
/**
* Even though you can access the uri, the method, and the request data,
* i would not touch them because that could cause unexpected behavior
* headers?: PesterHeaders;
* uri?: string;
* requestData?: any;
* method?: string;
*/
data.headers.Authorization = "Bearer Token";
}
})
instance.interceptors.addResponseInterceptor({
/**
* The data param contains the following in both success and error callback
* response: FetchResponse (Response), This is the response object that fetch will give you
* requestData: PesterData;
* Even though you can access the uri, the method, and the request data,
* i would not touch them because that could cause unexpected behavior
* - headers?: PesterHeaders;
* - uri?: string;
* - requestData?: any;
* - method?: string;
* payload: any; This is what the server returns either text or json (blob is not contemplated yet)
*/
success(data) {
// Useful if you need refresh tokens
if (data.payload.token) {
doSomethingWithToken(data.payload.token);
}
},
// Optional
error(data) {
}
})
async function test() {
await instance.post("/test", { message: "Hello from Pester"});
await instance.get("/test");
// If not set "treatEverythingAsJson" to true
await instance.post("/test", { message: "Hello from Pester"}).json() // or .text();
await instance.get("/test").json() // or .text();
}
test();
``