Skip to content

wflixu/obfetch

Repository files navigation

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

About

a httpClient base on rxjs and fetch api inspired by angular httpClient

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published