A JavaScript HTTP interceptor inspired by okhttp
npm install prhttp
Create an object which implement execute
function
class exampleEngine() {
execute(request) {
//execute http request
}
}
Create an ojbect which implement intercept
function
class exampleInterceptor() {
async intercept(chain) {
const newRequest = chain.request.newRequest()
newRequest.setHeader('Authorization', 'your token')
return await chain.proceed(newRequest)
}
}
import { PrHttpClientBuilder, PrRequestBuilder} from 'prhttp'
let builder = new PrHttpClientBuilder()
let httpClient = builder.setEngine(new exampleEngine())
.addInterceptor(new exampleInterceptor)
.build()
let getBuilder = new PrRequestBuilder()
getBuilder.setMethod('get')
.setBaseUrl("https://www.example.com")
.setContentType('application/json')
let request = getBuilder.build()
const data = {
data1: 'data'
}
request.setUrl('your api').setData(data)
httpClient.newCall(request).execute()
You can cancel a request Using Call.cancel()
. Instead of normal return , CancelError
will be thrown.
const call = httpClient.newCall(request)
call.execute().then(res => {
console.log(res)
}).catch( e => {
if(e instanceof CancelError) {
console.log('Request was cancelled')
} else {
console.log(e)
}
})
setTimeout( () => {
call.cancel()
}, 100)
PrHttpClient
instance can be bound to a lifecycle. When the state of lifecycle is BEFORE_UNMOUNTED
, Call.cancel()
will be call.
You can look at a full example which use Axios as engine