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
- Support to run on Electron or Node.js, use Electron's net module first
- Unified error handling
Install
npm install electron-request --save
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 {
method?: string;
body?: string | null | Buffer | Stream;
headers?: Record<string, string>;
query?: Record<string, string>;
followRedirect?: boolean;
maxRedirectCount?: number;
timeout?: number;
size?: number;
username?: string;
password?: string;
useSessionCookies?: boolean;
session?: Session;
}
Response
interface Response {
ok: boolean;
stream: Stream;
download: (dest: WriteStream, onProgress?: ProgressCallback) => Promise<void>;
arrayBuffer(): Promise<ArrayBuffer>;
blob(): Promise<Blob>;
text(): Promise<string>;
json<T>(): Promise<T>;
buffer(): Promise<Buffer>;
}
interface ProgressInfo {
total: number;
delta: number;
transferred: number;
percent: number;
bytesPerSecond: number;
}
License
MIT License
electron-request vs. the Competition
Package | Size |
---|
request | ![request package size](https://packagephobia.now.sh/badge?p=request) |
axios | ![axios package size](https://packagephobia.now.sh/badge?p=axios) |
node-fetch | ![node-fetch package size](https://packagephobia.now.sh/badge?p=node-fetch) |
request-pure | ![request-pure package size](https://packagephobia.now.sh/badge?p=request-pure) |
electron-request | ![electron-request package size](https://packagephobia.now.sh/badge?p=electron-request) |