Skip to content

guinanlin/YApi-X

Repository files navigation

YApi-X

🙏 致谢

首先,我要向YApi的原始作者致以最崇高的敬意和感谢。YApi虽然看似简单,但它陪伴了我很多年的开发工作,为API管理提供了极大的便利。

由于Google Chrome浏览器最近升级,只支持Manifest V3版本的扩展程序,而原版YApi-X插件使用的是Manifest V2,已被Chrome弃用。在网络上没有找到现成的V3版本,所以我手动修改升级了这个版本。

感谢AI时代的到来,让我们能够快速地对这个优秀的产品进行重新迭代和更新。这个升级版本目前已在本地测试通过,可以正常使用。


YApi-X 基于 YApi v1.8.8 开发,相较原版,有以下改动:

  • 接口路径支持更多字符,可以将 @#; 等字符用于接口路径定义;
  • 支持复制分类;
  • 新增 adminPassword 配置项以设置管理员密码;
  • 项目图标支持自传图片;
  • 接口运行支持上传文件(需安装插件 →);
  • 请求参数设置下的 Headers 支持批量添加;
  • 支持 webdav 扩展的 HTTP 请求方法 PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK(了解更多 →);
  • 支持为路径参数、查询参数设置类型。

Chrome 插件升级 (v1.3.0)

开发者指南

开发环境设置

cd chrome-extension
npm install

构建命令

npm run build

构建产物说明 构建完成后,会在 chrome-extension/yapi-x-chrome-extension/ 目录生成以下文件, 这个目录就是能安装的 yapi-x-chrome-extension/ :

  • manifest.json - 插件配置文件
  • background.js - 后台服务脚本
  • runtime.js - 内容脚本
  • adapter.js - YApi适配器
  • rules.json - 网络请求规则
  • logo.png - 插件图标

源码目录结构

chrome-extension/
├── src/                    # 源码目录
│   ├── background.ts       # 后台脚本源码
│   ├── runtime.ts          # 内容脚本源码
│   ├── adapter.ts          # 适配器源码
│   ├── manifest.json       # 插件配置
│   ├── rules.json          # 网络规则
│   ├── logo.png           # 图标资源
│   └── ...                # 其他资源文件
├── package.json           # 项目配置
├── rollup.config.js       # 构建配置
└── tsconfig.json          # TypeScript配置

主要升级内容

Manifest V3 支持

  • ✅ 从 manifest_version: 2 升级到 manifest_version: 3
  • ✅ 解决旧版本被Chrome弃用的问题
  • ✅ 支持现代Chrome浏览器

权限系统重构

  • ✅ 移除 webRequestwebRequestBlocking 权限
  • ✅ 新增 declarativeNetRequest 权限
  • ✅ 将主机权限分离到 host_permissions

Background Script 升级

  • ✅ 从 background.scripts 改为 background.service_worker
  • ✅ 移除基于 webRequest 的请求拦截逻辑
  • ✅ 简化消息传递机制

依赖系统现代化

  • ✅ 移除 vtils 依赖,使用原生JavaScript
  • ✅ 升级 TypeScript 到 5.0.0
  • ✅ 升级 Rollup 到 4.0.0
  • ✅ 使用新的 Rollup 插件:
    • @rollup/plugin-commonjs 替代 rollup-plugin-commonjs
    • @rollup/plugin-node-resolve 替代 rollup-plugin-node-resolve
    • @rollup/plugin-typescript 替代 rollup-plugin-typescript2
    • @rollup/plugin-terser 替代 rollup-plugin-terser

Web Accessible Resources 格式更新

  • ✅ 新的格式要求指定 matchesresources
  • ✅ 符合 Manifest V3 规范

构建系统优化

  • ✅ 添加 "type": "module" 支持ES模块
  • ✅ 修复 TypeScript 编译错误
  • ✅ 优化 rollup 配置

兼容性说明

  • ✅ Chrome 88+ (支持 Manifest V3)
  • ❌ 不支持旧版 Chrome 浏览器
  • ✅ 保持原有功能完整性

安装方法

  1. 打开 Chrome 浏览器
  2. 访问 chrome://extensions/
  3. 开启"开发者模式"
  4. 点击"加载已解压的扩展程序"
  5. 选择 chrome-extension/yapi-x-chrome-extension 目录

如何安装

为了节省各自的时间,推荐你使用 Docker 安装,同时本文档也不会介绍其他安装方式。

YApi-X 镜像

通过 Docker Compose 安装

以下是一个示例:

version: '3'

services:
  yapi-web:
    image: jayfong/yapi-x:latest
    container_name: yapi-web
    ports:
      - 40001:3000
    environment:
      - YAPI_ADMIN_ACCOUNT=admin@docker.yapi
      - YAPI_ADMIN_PASSWORD=adm1n
      - YAPI_CLOSE_REGISTER=true
      - YAPI_DB_SERVERNAME=yapi-mongo
      - YAPI_DB_PORT=27017
      - YAPI_DB_DATABASE=yapi
      - YAPI_MAIL_ENABLE=false
      - YAPI_LDAP_LOGIN_ENABLE=false
      - YAPI_PLUGINS=[]
    depends_on:
      - yapi-mongo
    links:
      - yapi-mongo
    restart: unless-stopped
  yapi-mongo:
    image: mongo:latest
    container_name: yapi-mongo
    volumes:
      - ./data/db:/data/db
    expose:
      - 27017
    restart: unless-stopped

运行

将上面的示例复制粘贴下来命名为 docker-compose.yml,使用以下命令运行:

docker-compose up -d

然后,通过 http://localhost:40001 即可访问 YApi-X

重启

若你修改了配置,务必重启应用才能生效:

docker-compose restart yapi-web

升级

YApi-X 一旦有更新,你可通过以下命令升级:

docker-compose pull yapi-web \
  && docker-compose down \
  && docker-compose up -d

升级不会对原有数据造成任何影响!

迁移

直接打包整个目录去新的服务器即可。

日志

如果出现意外情况,你可通过以下命令查看运行日志:

docker-compose logs yapi-web

如何配置

你可通过环境变量进行配置。

基础配置

环境变量名称 类型 说明 示例
YAPI_ADMIN_ACCOUNT string 管理员账号(邮箱) admin@foo.bar
YAPI_ADMIN_PASSWORD string 管理员密码 adm1n
YAPI_CLOSE_REGISTER boolean 是否关闭注册 true

数据库配置

环境变量名称 类型 说明 示例
YAPI_DB_SERVERNAME string MongoDB 服务地址 yapi-mongo
YAPI_DB_PORT number MongoDB 服务端口 27017
YAPI_DB_DATABASE string 使用的 MongoDB 数据库 yapi
YAPI_DB_USER string 登录 MongoDB 服务的用户名 root
YAPI_DB_PASS string 登录 MongoDB 服务的用户密码 r00t
YAPI_DB_AUTH_SOURCE string MongoDB 身份认证所用库 admin
YAPI_DB_CONNECT_STRING string 使用 MongoDB 集群时配置 mongodb://127.0.0.100:8418,127.0.0.101:8418/yapidb?slaveOk=true
YAPI_DB_OPTIONS json Mongoose 连接 MongoDB 服务时的额外选项,一般不用设置。请参考: Mongoose.prototype.connect() {}

邮件配置

环境变量名称 类型 说明 示例
YAPI_MAIL_ENABLE boolean 是否启用 true
YAPI_MAIL_HOST string 邮件服务地址 smtp.163.com
YAPI_MAIL_PORT number 邮件服务端口 465
YAPI_MAIL_FROM string 发送人邮箱 foo@163.com
YAPI_MAIL_AUTH_USER string 登录邮件服务的用户名 bar@163.com
YAPI_MAIL_AUTH_PASS string 登录邮件服务的用户密码 f00bar
YAPI_MAIL_OPTIONS json 传递给 Nodemailer 的额外选项,一般不用设置。请参考:Nodemailer > SMTP transport {"tls":{"rejectUnauthorized":false}}

LDAP 登录配置

环境变量名称 类型 说明 示例
YAPI_LDAP_LOGIN_ENABLE boolean 是否启用 true
YAPI_LDAP_LOGIN_SERVER string LDAP 服务地址 ldap://ldap.foo.bar
YAPI_LDAP_LOGIN_BASE_DN string 登录 LDAP 服务的用户名 cn=admin,dc=foo,dc=bar
YAPI_LDAP_LOGIN_BIND_PASSWORD string 登录 LDAP 服务的用户密码 f00bar
YAPI_LDAP_LOGIN_SEARCH_DN string 查询用户数据的路径 ou=users,dc=foo,dc=bar
YAPI_LDAP_LOGIN_SEARCH_STANDARD string 支持两种值:
1、前端登录账号对应的查询字段,如:mailuid 等;
2、自定义查询条件,其中 %s 会被前端登录账号替换,如:&(objectClass=user)(cn=%s)
-
YAPI_LDAP_LOGIN_EMAIL_POSTFIX string 登录邮箱后缀 @163.com
YAPI_LDAP_LOGIN_EMAIL_KEY string LDAP 数据库存储用户邮箱的字段 mail
YAPI_LDAP_LOGIN_USERNAME_KEY string LDAP 数据库存储用户名的字段 name

插件配置

环境变量名称 类型 说明 示例
YAPI_PLUGINS json 要使用的插件列表。点击查看开源 YApi 插件列表 →
配置项数据格式:
{
    "name": "插件名称",
    "options": "插件配置"
}
注意:
安装插件会运行 YApi 自带的打包命令,其内存消耗较大,因此,在安装插件时,物理机可用内存最好大于 1GB,否则,易出现内存溢出错误,导致插件安装失败。
[{"name":"add-user"},{"name":"gitlab","options":{}}]

About

YApi-X yapi chrome addon

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors