Fetch-based axios-style HTTP client.
"und" comes from undici, an HTTP/1.1 client officially supported by Node.js team.
"ios" comes from axios, a popular HTTP client for browser and Node.js.
- Browser and Node.js support
- Proxy agents (HTTP / HTTPS / SOCKS)
- WebSocket
import Undios from '@cordisjs/plugin-http'
const http = new Undios()
const data = await http.get('https://example.com')
const data = await http.post('https://example.com', body)
const { status, data } = await http('https://example.com', { method: 'GET' })
interface HTTP {
<K extends keyof ResponseTypes>(url: string, config: Config & { responseType: K }): Promise<Response<ResponseTypes[K]>>
<T = any>(url: string | URL, config?: Config): Promise<Response<T>>
}
Send a request.
interface HTTP {
get: Request1
delete: Request1
head(url: string, config?: Config): Promise<Headers>
}
interface Request1 {
<K extends keyof ResponseTypes>(url: string, config: Config & { responseType: K }): Promise<ResponseTypes[K]>
<T = any>(url: string, config?: Config): Promise<T>
}
Send a GET / DELETE / HEAD request.
interface HTTP {
patch: Request2
post: Request2
put: Request2
}
interface Request2 {
<K extends keyof ResponseTypes>(url: string, data: any, config: Config & { responseType: K }): Promise<ResponseTypes[K]>
<T = any>(url: string, data?: any, config?: Config): Promise<T>
}
interface HTTP {
ws(url: string | URL, config?: Config): WebSocket
}
Open a WebSocket connection.
Note
Currently we will use ws
package to polyfill WebSocket
in Node.js.
Once Node.js has a stable WebSocket API, we will switch to it.
interface Config {
baseURL?: string
method?: Method
headers?: Record<string, string>
redirect?: RequestRedirect
keepAlive?: boolean
params?: Record<string, any>
data?: any
responseType?: keyof ResponseTypes
timeout?: number
}
The base URL of the request. If it is set, the url
will be resolved against it.
See URL#base.
See fetch#method.
See fetch#headers.
See fetch#redirect.
See fetch#keepalive.
Additional query parameters. They will be appended to the URL.
The request body. Currently support below types:
- string
- URLSearchParams
- ArrayBuffer / ArrayBufferView
- Blob
- FormData
- Object (will be serialized to JSON)
Supported response types:
interface ResponseTypes {
json: any
text: string
stream: ReadableStream<Uint8Array>
blob: Blob
formdata: FormData
arraybuffer: ArrayBuffer
}
The request timeout in milliseconds.
Note
In order to use a proxy agent, you need to install @cordisjs/plugin-proxy-agent
.
interface Response<T> {
status: number
statusText: string
headers: Headers
data: T
}
See Response#status.
See Response#statusText.
See Response#headers.
The decoded response body.
class Undios {
constructor(config?: Config)
}
function is(error: any): error is Undios.Error