zhengxs2018 / urllib

基于 fetch 的 http 封装,仅支持 deno.js

Home Page:https://deno.land/x/urllib

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

urllib

⚠️ 注意: 本项目仅供学习,API 并不稳定,请勿用于正式环境

基于 denoFetch 的一个 HTTP 请求库。

使用

支持多种请求参数,点击这里查看完整的请求配置

import { createHttpClient } from "https://deno.land/x/urllib/mod.ts";

const client = createHttpClient({
  baseURL: "https://example.com",
});

// 支持字符串
await client.withRequest("/api/users/123");

// 支持 URL 对象
await client.withRequest(new URL("/api/users/123", "https://example.com"));

// 支持请求对象
await client.withRequest(
  new Request({
    url: "https://example.com",
    method: "GET",
  }),
);

拦截器

参考 Axios 实现的拦截器,但分离了 configrequest

client.interceptors.config.use((config) => {
  // 配置拦截器
  return config;
});

client.interceptors.request.use((request) => {
  // 请求拦截器
  return request;
});

client.interceptors.response.use((response) => {
  // 响应拦截器
  return response;
});

请求配置

type HttpRequestConfig = {
  url?: URL | string;
  method?: Method;
  baseURL?: string;
  headers?: HeadersInit;
  params?: ParamsInit | null;
  body?: BodyInit | null;
  redirect?: RequestRedirect;
  responseType?: ResponseType;
  validateStatus?: (status: number, response: Response) => boolean;
  transformResponse?: [
    (response: Response, config: HttpRequestOptions) => Promise<any> | any,
    ((error: Error) => never) | undefined,
  ];
  signal?: AbortSignal | null;
};

链接

License

MIT

About

基于 fetch 的 http 封装,仅支持 deno.js

https://deno.land/x/urllib

License:MIT License


Languages

Language:TypeScript 100.0%