obfetch
v1.1.0
Published
A http client based on rxjs and fetch API inspired by Angular HttpClient.
Downloads
12
Maintainers
Readme
obfetch
An http client based on rxjs and fetch API inspired by Angular HttpClient.
use
install
#npm
npm install obfetch
#pnpm
npm add obfetch
example
basic
// http.ts/js
import { HttpClient } from 'obfetch';
epxort const http = new HttpClient({
baseURL:'http://somehost:8888/some/path'
});
// business.ts
import {http} from 'http'
http.get('http://127.0.0.1:8443/ping').subscribe(data => {
console.log(data);
})
http.post('http://127.0.0.1:8443/ping', {username:'youname'}).subscribe(data => {
console.log(data);
})
Interceptors
obfetch supports a form of middleware known as interceptors, you can use interceptor config request or format response data。
// Defining an interceptor modifying request
export function tokenInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {
let token = getTokenSomeWhere();
if(token) {
const reqWithHeader = req.clone({
headers: req.headers.set('Authorizen', token),
});
return next(reqWithHeader);
}
return next(req);
}
// Defining an interceptor formatting response data
export function responseDataFormatInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {
return next(req).pipe(
map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
return event.clone({ body: event.body?.data });
}
return event;
}),
);
}
// Use interceptor
http.use([tokenInterceptor,responseDataFormatInterceptor])
//
Developing
local build
pnpm install
pnpm build
unit test
pnpm vitest run
pnpm coerage