Neurophysiologically Pseudoscientific Manatee

    electron-request
    TypeScript icon, indicating that this package has built-in type declarations

    1.8.1 • Public • Published

    English | 简体中文

    electron-request

    Zero-dependency, Lightweight HTTP request client for Electron or Node.js

    Why electron-request ?

    Electron-request uses its built-in net module in Electron environment and uses its built-in HTTP module in Node.js environment.

    Net module is used in electron to better support proxy, authentication, traffic monitoring proxies and other features. Please refer to net for details.

    Features

    • Zero-dependency, Lightweight
    • Quick start, similar window.fetch
    • No need to import other libraries, support file download progress and file verification
    • Support to run on Electron or Node.js, use Electron's net module first
    • Unified error handling

    Install

    npm install electron-request --save
    # or
    yarn add electron-request

    Usage

    import request from 'electron-request';
    
    void (async () => {
      const url = 'https://github.com/';
      const defaultOptions = {
        method: 'GET',
        body: null,
        followRedirect: true,
        maxRedirectCount: 20,
        timeout: 0,
        size: 0,
      };
      const response = await request(url, defaultOptions);
      const text = await response.text();
    })();

    API

    request(url[, options])

    • url: Request URL

    • options: Options

      interface Options {
        /**
         * Request method
         * @default 'GET'
         */
        method?: string;
        /**
         * Request body
         * @default null
         */
        body?: string | null | Buffer | Stream;
        /**
         * Request headers
         */
        headers?: Record<string, string | string[]>;
        /**
         * Request query
         */
        query?: Record<string, string>;
        /**
         * Allow redirect
         * @default true
         */
        followRedirect?: boolean;
        /**
         * Maximum redirect count. 0 to not follow redirect
         * @default 20
         */
        maxRedirectCount?: number;
        /**
         * Request/Response timeout in ms. 0 to disable
         * @default 0
         */
        timeout?: number;
        /**
         * Maximum response body size in bytes. 0 to disable
         * @default 0
         */
        size?: number;
        /**
         * Whether to use nodejs native request
         * @default false
         */
        useNative?: boolean;
      
        // Docs: https://www.electronjs.org/docs/api/client-request#new-clientrequestoptions
      
        /**
         * Only in Electron. When use authenticated HTTP proxy, username to use to authenticate
         */
        username?: string;
        /**
         * Only in Electron. When use authenticated HTTP proxy, password to use to authenticate
         */
        password?: string;
        /**
         * Only in Electron. Whether to send cookies with this request from the provided session
         * @default true
         */
        useSessionCookies?: boolean;
        /**
         * Only in Electron. The Session instance with which the request is associated
         * @default electron.session.defaultSession
         */
        session?: Session;
      }

    Response

    interface Response {
      /** Whether the response was successful (status in the range 200-299) */
      ok: boolean;
      /** Response headers */
      headers: Record<string, string | string[]>;
      /** Return origin stream */
      stream: Stream;
      /** Decode response as ArrayBuffer */
      arrayBuffer(): Promise<ArrayBuffer>;
      /** Decode response as Blob */
      blob(): Promise<Blob>;
      /** Decode response as text */
      text(): Promise<string>;
      /** Decode response as json */
      json<T>(): Promise<T>;
      /** Decode response as buffer */
      buffer(): Promise<Buffer>;
      /**
       * Download file to destination
       * @param {Writable} destination Writable destination stream
       * @param {ProgressCallback=} onProgress Download progress callback
       * @param {ValidateOptions=} validateOptions Validate options
       */
      download: (
        destination: Writable,
        onProgress?: ProgressCallback,
        validateOptions?: ValidateOptions,
      ) => Promise<void>;
    }
    
    /** Download progress information */
    interface ProgressInfo {
      /** Total file bytes */
      total: number;
      /** Delta file bytes */
      delta: number;
      /** Transferred file bytes */
      transferred: number;
      /** Transferred percentage */
      percent: number;
      /** Bytes transferred per second */
      bytesPerSecond: number;
    }

    License

    MIT License

    electron-request vs. the Competition

    Package Size
    request request package size
    axios axios package size
    node-fetch node-fetch package size
    request-pure request-pure package size
    electron-request electron-request package size

    Install

    npm i electron-request

    DownloadsWeekly Downloads

    62

    Version

    1.8.1

    License

    MIT

    Unpacked Size

    69.8 kB

    Total Files

    7

    Last publish

    Collaborators

    • islizeqiang