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 🙏

© 2024 – Pkg Stats / Ryan Hefner

yapi-to

v1.0.14

Published

根据Yapi提供的接口文档,生成请求js请求、ts请求、ts声明、json schema。

Downloads

5

Readme

yapi-to-api

根据Yapi提供的接口文档,生成请求js请求、ts请求、ts声明、json schema。

文档

yapi -h
Commands:
  init            初始化,生成配置文件
  install         生成代码
  i               生成代码(简写形式)

使用

安装

//全局安装,不侵入项目
npm i yapi-to -g
//验证 
yapi -v

使用

//进⼊项⽬根⽬录下
cd project

//⽣成配置⽂件,自动将.yapi文件夹添加到.gitignore
yapi init

//在.yapi/yapi.config.js中填写yapi配置
module.exports = {
    yapiUrl: 'http://yapi.xxxx.com:8080', // example: www.baidu.com
    typeResponseArray: false, //返回值ts类型是否为数组 false: Promise<response> true: [object,Promise<response>]
    jsonSchema: true, //是否生成jsonSchema
    projects: [
        {
            title: '', //项目名称,用于生成目录
            token: '' //项目token
        }
    ]
}

//生成api
yapi i  
// or
yapi install

生成目录结构

.
├── .gitignore
└── .yapi
    ├── js
    │   └── 宠物
    │       ├── 公共分类.js
    │       └── 宠物店.js
    ├── jsonSchema
    │   └── 宠物
    │       ├── 公共分类.js
    │       └── 宠物店.js
    ├── ts
    │   └── 宠物
    │       ├── 公共分类.ts
    │       ├── 公共分类Types.ts
    │       ├── 宠物店.ts
    │       └── 宠物店Types.ts
    └── yapi.config.js

ts声明

 //新建宠物信息
export interface CreateResponse {
    code: number;
    data: {
        /**
         * 宠物ID编号
         */
        id: number;
        category: {
            /**
             * 分组ID编号
             */
            id?: number;
            /**
             * 分组名称
             */
            name?: string;
            [k: string]: unknown;
        };
        /**
         * 名称
         */
        name: string;
        /**
         * 照片URL
         */
        photoUrls: string[];
        /**
         * 标签
         */
        tags: {
            /**
             * 标签ID编号
             */
            id?: number;
            /**
             * 标签名称
             */
            name?: string;
            [k: string]: unknown;
        }[];
        /**
         * 宠物销售状态
         */
        status: "available" | "pending" | "sold";
        [k: string]: unknown;
    };
    [k: string]: unknown;
}

生成tsApi

import type {
    PetidResponse,
    DetailResponse,
    CreateDataRequest,
    CreateResponse,
    UpdateDataRequest,
    UpdateResponse
} from './types'
import request from '@/api/request'
/*
 *@分类名称 宠物店.
 *@分类描述 undefined.
 *@创建时间 2022-09-16 21:55:39.
 *@更新时间 2022-09-16 21:55:39.
 */
class ApiName {
    /*
     *删除宠物信息
     *@接口分类  宠物店
     *@接口名称  删除宠物信息
     *@接口地址  http://yapi.xxxx.com:8080/project/167/interface/api/37861
     *@创建人  user
     *@创建时间 2022-09-16 21:55:39
     *@更新时间  2022-09-16 21:55:39
     */
    petId(petId,data): Promise<PetidResponse> {
        return request.delete({
            url: `/pet/${petId}`,
            data
        })
    }

    /*
     *查询宠物详情
     *@接口分类  宠物店
     *@接口名称  查询宠物详情
     *@接口地址  http://yapi.xxxx.com:8080/project/167/interface/api/37867
     *@创建人  user
     *@创建时间 2022-09-16 21:55:40
     *@更新时间  2022-09-20 17:16:39
     */
    detail(petId): Promise<DetailResponse> {
        return request.get({
            url: `/pet/${petId}`
        })
    }

    /*
     *新建宠物信息
     *@接口分类  宠物店
     *@接口名称  新建宠物信息
     *@接口地址  http://yapi.xxxx.com:8080/project/167/interface/api/37873
     *@创建人  user
     *@创建时间 2022-09-16 21:55:40
     *@更新时间  2022-09-16 21:55:40
     */
    create(data: CreateDataRequest): Promise<CreateResponse> {
        return request.post({
            url: `/pet`,
            data
        })
    }

    /*
     *修改宠物信息
     *@接口分类  宠物店
     *@接口名称  修改宠物信息
     *@接口地址  http://yapi.xxxx.com:8080/project/167/interface/api/37879
     *@创建人  user
     *@创建时间 2022-09-16 21:55:40
     *@更新时间  2022-09-16 21:55:40
     */
    update(data: UpdateDataRequest): Promise<UpdateResponse> {
        return request.put({
            url: `/pet`,
            data
        })
    }
}
const apiName = new ApiName()

export { apiName }

生成jsApi

import request from '@/api/request'

/*
 *@分类名称 报表管理.
 *@分类描述 Report Controller.
 *@创建时间 2022-09-24 14:31:28.
 *@更新时间 2022-09-24 14:31:28.
 */
class ApiName {

    /*
    *获取报表列表
    *@接口分类  报表管理
    *@接口名称  获取报表列表
    *@接口地址  http://www.yapi.com/project/140/interface/api/38365
    *@创建人  user
    *@创建时间 2022-09-24 14:31:44
    *@更新时间  2022-09-24 14:31:44
    *@param  isDelete  query参数   删除标识
    *@param  modelTypeId  query参数   专题分类Id
    *@param  page  query参数   页码 (0..N)
    *@param  size  query参数   每页显示的数目
    *@param  sort  query参数   以下列格式排序标准:property[,asc | desc]。 默认排序顺序为升序。 支持多种排序条件:如:id,asc
    *@param  statisticalType  query参数   统计类型 0-总体统计,1-企业列表,2-机构列表,3-区县列表
    */
    list(params) {
        return request.get({
            url: `/reports`,
            params
        })
    }

    /*
    *新增报表
    *@接口分类  报表管理
    *@接口名称  新增报表
    *@接口地址  http://www.yapi.com/project/140/interface/api/38371
    *@创建人  user
    *@创建时间 2022-09-24 14:31:44
    *@更新时间  2022-09-24 14:31:44
    */
    create(data) {
        return request.post({
            url: `/reports`,
            data
        })
    }

    /*
    *编辑报表
    *@接口分类  报表管理
    *@接口名称  编辑报表
    *@接口地址  http://www.yapi.com/project/140/interface/api/38377
    *@创建人  user
    *@创建时间 2022-09-24 14:31:45
    *@更新时间  2022-09-24 14:31:45
    */
    update(data) {
        return request.put({
            url: `/reports`,
            data
        })
    }

    /*
    *删除报表
    *@接口分类  报表管理
    *@接口名称  删除报表
    *@接口地址  http://www.yapi.com/project/140/interface/api/38383
    *@创建人  user
    *@创建时间 2022-09-24 14:31:45
    *@更新时间  2022-09-24 14:31:45
    */
    del(data) {
        return request.delete({
            url: `/reports`,
            data
        })
    }

    /*
    *获取报表id查询报表详情
    *@接口分类  报表管理
    *@接口名称  获取报表id查询报表详情
    *@接口地址  http://www.yapi.com/project/140/interface/api/38389
    *@创建人  user
    *@创建时间 2022-09-24 14:31:45
    *@更新时间  2022-09-24 14:31:45
    *@param  id  路径参数   id
    */
    detail(id) {
        return request.get({
            url: `/reports/${id}`
        })
    }
}

const apiName = new ApiName

export default apiName

生成json schema

const jsonSchema = {
    "CreateResponse": {
        "type": "object",
        "properties": {
            "code": {
                "type": "integer",
                "minimum": 0,
                "maximum": 0
            },
            "data": {
                "required": [
                    "name",
                    "photoUrls",
                    "id",
                    "category",
                    "tags",
                    "status"
                ],
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64",
                        "minimum": 1,
                        "maximum": 5000,
                        "description": "宠物ID编号"
                    },
                    "category": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer",
                                "format": "int64",
                                "minimum": 1,
                                "description": "分组ID编号"
                            },
                            "name": {
                                "type": "string",
                                "description": "分组名称"
                            }
                        },
                        "xml": {
                            "name": "Category"
                        },
                        "x-apifox-orders": [
                            "id",
                            "name"
                        ],
                        "x-apifox-ignore-properties": [],
                        "x-apifox-folder": "宠物店",
                        "_null_": "#/components/schemas/Category"
                    },
                    "name": {
                        "type": "string",
                        "example": "doggie",
                        "description": "名称"
                    },
                    "photoUrls": {
                        "type": "array",
                        "xml": {
                            "name": "photoUrl",
                            "wrapped": true
                        },
                        "items": {
                            "type": "string"
                        },
                        "description": "照片URL"
                    },
                    "tags": {
                        "type": "array",
                        "xml": {
                            "name": "tag",
                            "wrapped": true
                        },
                        "items": {
                            "type": "object",
                            "properties": {
                                "id": {
                                    "type": "integer",
                                    "format": "int64",
                                    "minimum": 1,
                                    "description": "标签ID编号"
                                },
                                "name": {
                                    "type": "string",
                                    "description": "标签名称"
                                }
                            },
                            "xml": {
                                "name": "Tag"
                            },
                            "x-apifox-orders": [
                                "id",
                                "name"
                            ],
                            "x-apifox-ignore-properties": [],
                            "x-apifox-folder": "宠物店",
                            "_null_": "#/components/schemas/Tag"
                        },
                        "description": "标签"
                    },
                    "status": {
                        "type": "string",
                        "description": "宠物销售状态",
                        "enum": [
                            "available",
                            "pending",
                            "sold"
                        ]
                    }
                },
                "xml": {
                    "name": "Pet"
                },
                "x-apifox-orders": [
                    "id",
                    "category",
                    "name",
                    "photoUrls",
                    "tags",
                    "status"
                ],
                "x-apifox-ignore-properties": [],
                "x-apifox-folder": "宠物店",
                "_null_": "#/components/schemas/Pet"
            }
        },
        "required": [
            "code",
            "data"
        ],
        "x-apifox-orders": [
            "code",
            "data"
        ],
        "x-apifox-ignore-properties": [],
        "title": "CreateResponse"
    }
}