https://github.com/idleray/prhttp
A JavaScript HTTP interceptor
https://github.com/idleray/prhttp
http interceptor javascript lifecycle nodejs
Last synced: 12 months ago
JSON representation
A JavaScript HTTP interceptor
- Host: GitHub
- URL: https://github.com/idleray/prhttp
- Owner: idleray
- License: mit
- Created: 2021-08-01T11:26:11.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-12-01T08:40:53.000Z (over 2 years ago)
- Last Synced: 2025-04-10T22:58:35.076Z (12 months ago)
- Topics: http, interceptor, javascript, lifecycle, nodejs
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# prhttp
A JavaScript HTTP interceptor inspired by [okhttp](https://github.com/square/okhttp)
## Installation
```shell
npm install prhttp
```
## Usage
### Create HTTP engine
Create an object which implement `execute` function
```
class exampleEngine() {
execute(request) {
//execute http request
}
}
```
### Create interceptor
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)
}
}
```
### Send Http request
```
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()
```
### Cancellation
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)
```
### Lifecycle Binding
`PrHttpClient` instance can be bound to a lifecycle. When the state of lifecycle is `BEFORE_UNMOUNTED`, `Call.cancel()` will be call.
- [React Binding](https://github.com/idleray/prhttp-react)
- [Vue Binding](https://github.com/idleray/prhttp-vue)
## Example
You can look at a [full example](example/index.js) which use [Axios](https://github.com/axios/axios) as engine