New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

net4j

Package Overview
Dependencies
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

net4j

Pluggable & Promise based HTTP client for the browser and node.js

latest
npmnpm
Version
1.1.16
Version published
Weekly downloads
7
Maintainers
1
Weekly downloads
 
Created
Source

net4j

Pluggable & Promise based HTTP client for the browser and node.js

Features

  • Support Typescript
  • Pluggable, easily unified processing
  • Dependency injection
  • Make XMLHttpRequests from the browser
  • Make http requests from node.js
  • Supports the Promise API
  • Automatic transforms for JSON data

gif

Browser Support

ChromeFirefoxSafariOperaEdgeIE
Latest ✔Latest ✔Latest ✔Latest ✔Latest ✔11 ✔

Browser Matrix

Install

$ npm install net4j

$ yarn add net4j

Example

Normal Request

Performing a GET request

import Net from 'net4j';

const net = new Net();

// Type merge,so that /api/v2/goods will be typed
declare module 'net4j' {
  interface IGetRoute {
    '/api/v2/goods': {
      request: {
        id: number
      }
      response: {
        data: {
          GoodsInfo
        } 
      }
    },
  }
}

// `GET` request
// result will be typed with {data: {GoodsInfo}}
const result = await net.get('/api/v2/goods');

Restful

import Net from 'net4j';

const net = new Net();

// Type merge,so that /api/v2/goods/:id will be typed
declare module 'net4j' {
  interface IGetRoute {
    '/api/v2/goods/:id': {
      response: {
        data: {
          GoodsInfo
        } 
      }
    },
  }
}

// `GET` request
// result will be typed with {data: {GoodsInfo}}
const result = await net.get('/api/v2/goods/:id', {restful: {id: 123}});

With plugins

import Net from 'net4j';
import { message, Modal } from 'antd';
import NetLog from 'net4j-log-plugin';
import NetSuccess, { SuccessConfig } from 'net4j-success-plugin';
import NetLoading, { LoadingConfig } from 'net4j-loading-plugin';
import NetException, { ExceptionConfig } from 'net4j-exception-plugin';


declare module 'net4j' {
  // Merge plugin config to net4j config,then you can use it in every requst in net4j
  interface IConfig extends SuccessConfig, LoadingConfig, ExceptionConfig {};

  // Type merge,so that /api/v2/goods will be typed
  interface IGetRoute {
    '/api/v2/goods': {
      request: {
        id: number
      }
      response: {
        data: {
          GoodsInfo
        } 
      }
    },
  }
}

// Exception code to message
// Exception code comes from http status,response result.code,promise reject error.code
const codeMsgMap = {
  404: 'page not found',
  403: function() {
    // In this time, tipsComponent will not show.
    redirect('/login');
  },
  5400: 'Name repeat'
}

const net = new Net(plugins: [
  // Inject own log,so the exception and other operations will be reported
    new NetLog({
      log: {
        info: myLogger.info,
        error: myLogger.error,
      },
    }),
    // When request is pending, message loading will display and close when request finish
    new NetLoading({
      loading: message.loading,
    }),
    // When request completed successfully, message.success will display
    new NetSuccess({
      tipsComponent: message.success,
    }),
    // When request get exception,error modal will display and error will be auto reported
    new NetException({
      tipsComponent: Modal.error,
      codeMsgMap,
    }),
  ]);

// `GET` request
// result will be typed with {data: {GoodsInfo}}
const result = await net.get('/api/v2/goods', {params: {id: 123}});

Plugins

How to write a plugin

export interface Plugin {
  beforeRequest?(e?: Error, config?: AxiosRequestConfig, lib?: Lib): IConfig | Promise<Config>;
  // Inject libs to whole request, so other plugins use these libs 
  applyLib?(lib: { [key: string]: any}): { [key: string]: any};
  afterRequest?<T = any>(e?: Error, response?: T, lib?: Lib): T | Promise<AxiosResponse<Error>>;
}

Keywords

http

FAQs

Package last updated on 24 Sep 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts