swaggerUI不好用,试试这个openapiUI?


title: swaggerUI不好用,试试这个openapiUI?
date: 2024-01-08
categories: [tool]
tags: [openapi,工具]
description: 基于swaggger2, openapi3规范的UI文档

1.背景

  • 由于长期使用 swaggerUI 工具,它的轻量风格个人觉得还是不错的,但是它的整体使用体验确实不好,用过的可能都有体会,这里就不一一列举了(由于语言表达能力有限,手动🐶保命,毕竟我在说鼻祖,等下会不会被砍😭)
  • 开源的openapi文档redoc,由于默认的服务器在国外,测试调用接口体验也不咋好,还有就是UI风格有点不习惯,可能看习惯了swaggerUI的缘故
  • 强大的apifox,除了强行喷不喜欢它的UI风格,请求参数和model定义成嵌套表格展示有点难受,好像找不出什么理由了😂,整体还是灰常好用的
  • 以上种种其实都是废话,不装了,摊牌了,强行找的理由而已😂

2.简单介绍下openapiUI(对标swaggerUI)

  • 2.1.openapiUI是一个简单轻量、比 swagger-ui 更美观的 openapi 接口文档,可以快速的生成模拟请求参数并调用 api 请求
  • 2.2.openapiUI的github地址是:github.com/rookie-luochao/openapi-ui,求star,求一起共同建设,灰常感谢🙏

3.openapiUI网站域名

  • CN: www.openapi-ui.com
  • US: docs.openapi-ui.com

4.项目技术栈

  • 因为项目功能不是特别复杂,也不需要考虑兼容性,所以项目的技术栈非常新颖,追着版本跑的那种,如同有需要你可以学习下项目的技术架构
  • 项目主要技术栈为:vite5 + react18 + typescript5 + react-router6 + antd5 + zustand4 + emotion(cssinjs) + docker + docker容器化部署 + docker环境变量注入
  • 项目工程化配置为:eslint + typescript-eslint + husky + lint-staged + prettier + commitlint
  • 如果你做业务开发的话,推荐增加openapi2typescript,可以自动生成axios请求和接口的ts定义、react-query,可以自动实现自动loading和接口联动,具体如何结合使用可以参考我搭建的前端开发脚手架,目前支持react18模板、vue3模板,我们可以一起完善模板的技术栈和UI Layout结构

5.目前支持的数据格式

  • 5.1.支持swagger2规范,json或者yaml,即:swagger2.json/swagger2.yml
  • 5.2.支持openapi3规范,json或者yaml,包含3.0.x、3.1.x,即:openapi3.json/openapi3.yml

6.目前支持的3种使用方法

  • 6.1.输入 swagger2/openapi3 的网关地址,这种使用方式的前提是openapi文档已经做成了 get 接口,这种使用方法可以分享url,别人拿到url可以回显到你当前正在测试的接口
  • 6.2.上传 swagger2/openapi3 文件,由于是上传的文件,数据太大,url无法携带,后面尝试使用base64测试一下
  • 6.3.输入 swagger2/openapi3 文本,同2
    openapiUI登录页面

7.快速生成模拟接口请求参数

  • 其实整个文档比较关键的一部分就是mock请求参数的合理性,暂时只是比较粗略的一个mock,后续会重点对mock策略进行升级
  • 如果 openapi 接口请求参数 schema 定义了 format 字段,则使用openapi-sampler 去生成模拟请求参数,具体的规则可以点击 url 跳转查看,它也只是简单的一个mock
  • 如果 openapi 接口请求参数 schema 没有定义 format 字段,则使用 faker 去生成模拟请求参数,预定义了一些参数名称规则,如果请求参数的名称正好命中这些预定义的参数名称,则按照命中规则进行mock数据,如果参数名称没有命中预定义的规则,则根据参数类型简单进行mock

8.手动填写body复杂数据结构

  • 引入 monaco-editor 编辑器,填写任何字段都会有类型提示,增加填写数据的友好性

9.支持多语言、提供一个国际化接入模板

  • 9.1.支持中文
  • 9.2.支持英语

10.为方便开发,支持一些全局配置

  • 10.1.支持配置接口请求超时时间,默认的接口超时时间是2分钟,为了测试接口的灵活性,如果有些接口需要快速响应,等待2分钟那简直要命,所以将接口超时时间做成可配置,方便调试
  • 10.2.支持配置接口请求Authorization,因为大部分的接口都需要Authorization,如果切换接口都需要重新填写Authorization的话,显然很不安逸。程序员个体大部分都是讨厌手动重复的团队,所以怕麻烦的可以全局配置一下Authorization,这样每个接口都不用填写了。如果有些接口的Authorization和全局的Authorization不一致也不要紧,你在当前接口重新填写一下,会覆盖全局的Authorization,这样就避免了被全局Authorization干扰。或者特殊接口你就重新取个header key,例如:x-code,这样页面的参数都不会显示Authorization,更加不会冲突了

11.对于接口不能跨域请求

  • 目前还没有对跨域做支持,但是会尽快加上

12.对于不能连接内网api

  • 如果不能连接内网api的情况, en…好像也没什么好办法,你可以在本地运行此项目或者使用 docker 在本地或者服务器部署此项目,这样你就可以愉快的访问内网api了

13.如果你想分享某个接口的url给别人快速定位

  • 为了保持url的简洁性, 如果想要分享url供他人快速访问,则需要点击页面右上角的 分享url按钮 生成分享链接,然后再进行分享。其实是可以直接把 api 地址啥的挂在 query 上的,那样分享起来更方便,但是个人喜欢简洁点的url(轻微强迫症患者),后续讨论一下怎么挂参数吧

14.如果你想同时查看多个api网关

  • 由于本项目就是个纯粹的前端静态页面,并没有接入后端进行状态管理,API存储管理等功能,所以暂时就不具备存档的能力。
  • 该 openapiUI 项目默认的缓存策略是session storage, 可以同时打开多个页面去查看多个 api 网关

15.未来的展望

  • 由于刚开发出来,还没有怎么使用,bug还很多,需要不断修复bug
  • 精细化的支持openapi3.0.x和3.1.x,做到都能正常展示
  • 优化mock策略,更好的模拟请求参数
  • 增加跨域访问的能力
  • 支持一套暗黑主题
  • 考虑增加:点击schema生成typescript的interface功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334669.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在python里面探索web框架

一、常识性知识 python Web框架三巨头:Flask(简单易学)、Django(复杂庞大)、FastAPI 1. Django:Django是一个高级的Web框架,它提供了强大的功能和工具,用于快速开发复杂的Web应用程序。 2. Flask&#xff…

Nginx配置反向代理实例一

Mac 安装Nginx教程 提醒一下:下面实例讲解是在Mac系统演示的; 反向代理实例一实现的效果 在浏览器地址栏输入www.testproxy.com, 跳转到系统Tomcat主页面。 反向代理准备工作 第一步:在系统的 hosts 文件进行ip和域名对应关系的配置。 …

Pytest自动化测试框架

1、pytest简介 pytest是Python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败能够支持简单的单元…

蜗牛目标检测数据集VOC格式480张

蜗牛,一种缓慢而坚韧的软体动物,以其螺旋形的外壳和黏附力极强的黏液而为人所熟知。 蜗牛体型呈螺旋形,有一个硬壳保护其柔软的身体。壳的形状和纹理因种类而异,有的光滑如玻璃,有的则布满细纹。蜗牛的头部有两对触角…

【算法Hot100系列】在排序数组中查找元素的第一个和最后一个位置

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

一台智能汽车会使用哪些芯片

目录 1.汽车芯片技术逻辑 2.汽车芯片产品详解和厂商一览 2.1 控制芯片 2.2 计算芯片 2.3 传感芯片 2.4 通信芯片 2.5 存储芯片 2.6 安全芯片 2.7 功率芯片 2.8 驱动芯片 2.9 电源管理芯片 2.10 系统基础芯片 3.小结 这两天算是和标准杠上了,哈哈。 昨…

解决:已经安装open3d,还是报错No module named ‘open3d‘的问题

首先示例,我是如何安装又是如何被报错的过程。 报错过程: 网上普遍的安装指令就是下面这个: pip install open3d 第一次,我是直接在pychram页面的python程序下方的终端窗口安装的: 安装完,检查列表已安…

游戏引擎巨头Unity 裁员 25%;章泽天净资产600亿;恒大汽车刘永灼被抓;抖音将“抖币”更名为“钻石”;董宇辉新账号将于今晚首播

今日精选 • 游戏引擎巨头 Unity 计划裁员 25%,去年底曾关闭全球多处办公室• 恒大汽车刘永灼被抓,股价闪崩20%,刚丢35亿救命钱• 抖音将“抖币”更名为“钻石”• 章泽天登胡润财富榜:净资产600亿• 董宇辉新账号未开播已有400万…

师傅带练|在线实习项目,提供实习证明

八大项目:某实习网站招聘信息采集与分析(Python数据采集与分析) 股票价格形态聚类与收益分析(Python金融分析) 某平台网络入侵用户自动识别(Python机器学习) 某平台广东省区采购数据分析&…

MySQL8.0 升级

将 MySQL8.0.30 升级到 MySQL8.0.32 备份旧数据 rootLAPTOP-FPIQJ438:/data/backup# xtrabackup --backup --userroot --password123456 --socket/tmp/mysql.sock --target-dir/data/backup/ 2024-01-08T16:46:38.98768708:00 0 [Note] [MY-011825] [Xtrabackup] recognized s…

控制障碍函数(Control Barrier Function,CBF) 三、代码

三、代码实现 3.1、模型 这是一个QP问题,所以我们直接建模 这其实还是之前的那张图,我们把这个大的框架带入到之前的那个小车追击的问题中去,得到以下的一些具体的约束条件 CLF约束 L g V ( x ) u − δ ≤ − L f V ( x ) − λ V ( x ) …