npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

yyapi

v0.0.5

Published

基于 **[Axios](https://github.com/axios/axios)** 集约型 API 接口管理模块

Readme

YYAPI

基于 Axios 集约型 API 接口管理模块

安装

yarn add yyapi
# 或者
npm i yyapi

使用

基本使用

import { createAPI, API, Sender, Method } from 'yyapi'

interface CustomAPI extends API{
  test1: Sender
  test2: Sender<{ id: number }>
}

// 实例化
const api = createAPI<CustomAPI>({
  test1: '接口地址',
  test2: {
    url: '接口地址',
    method: Method.Put
  }
}, {
  headers: {
    token: '1234567890'
  }
}, {
  async onBeforeRequest ({ namespace, url, config }) {
    // 发送请求前回调,可用于注入 headers 参数等功能
    // namespace 命名空间,如 test1、test2
    // url 请求的 <Url> 参数
    // config 请求的参数
    config.headers.token = '0987654321'
    console.log('onBeforeRequest', namespace)
  },
  async onBeforeReturnResponse ({ namespace, url, config, response }) {
    // 请求成功后,还未返回数据前的回调,可用于动态包裹返回数据等功能
    console.log('onBeforeReturnResponse', response.status)
  },
  async onError ({ namespace, url, config, error }) {
    // 请求失败回调,可用于统一接口请求失败上报等功能
    console.log('onerror', error.message)
  }
})

// 请求接口
api.test1() // Promise<any>
api.test2() // Promise<{ id: number }>

配置项

createAPI(<Urls>, <AxiosRequestConfig?>, <Events?>)

Data

import { createAPI, API, Sender } from 'yyapi'

// 定义请求数据类型
interface RequestData {
  id: number
}

// 定义返回数据类型
interface ResponseData {
  name: string
}

interface CustomAPI extends API {
  test: Sender<ResponseData, RequestData>
}

const api = createAPI<CustomAPI>({
  test: '接口地址'
})

// Get 请求会自动转为 url 参数
api.test(<RequestData>) // Promise<ResponseData>

Keys

import { createAPI, API, Sender } from 'yyapi'

// 定义请求数据类型
interface RequestData {
  id: number
}

// 定义请求配置数据类型
interface RequestConfig {
  keys: {
    id: number
  }
}

// 定义返回数据类型
interface ResponseData {
  name: string
}

interface CustomAPI extends API {
  test: Sender<ResponseData, RequestData, RequestConfig>
}

const api = createAPI<CustomAPI>({
  test: '接口地址/:id'
})

// 配置 keys 自动注入 url 参数
api.test(<RequestData>, <RequestConfig>) // Promise<ResponseData>