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.mzph.cn/news/607505.shtml

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

相关文章

【漏洞复现】Hikvision SPON IP网络对讲广播系统存在命令执行漏洞CVE-2023-6895

漏洞描述 Hikvision Intercom Broadcasting System是中国海康威视(Hikvision)公司的一个对讲广播系统。 Hikvision Intercom Broadcasting System是中国海康威视(Hikvision)公司的一个对讲广播系统。Hikvision Intercom Broadcasting System 3.0.3_20201113_RELEASE(HIK)版…

vulhub中的Apache SSI 远程命令执行漏洞

Apache SSI 远程命令执行漏洞 1.cd到ssi-rce cd /opt/vulhub/httpd/ssi-rce/ 2.执行docker-compose up -d docker-compose up -d 3.查看靶场是否开启成功 dooker ps 拉取成功了 4.访问url 这里已经执行成功了,注意这里需要加入/upload.php 5.写入一句话木马 &…

微信预约小程序制作指南:从小白到专家

在当今的数字时代,微信小程序已经成为了一种非常流行的应用方式。预约功能更是成为了许多小程序的核心功能之一。如果你也想为你的小程序添加预约功能,以下步骤将会对你有所帮助。 一、进入乔拓云网后台 乔拓云网是一个在线小程序开发平台,你…

如何使用Docker部署开源CMF Drupal并结合cpolar内网穿透远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。它的学习…

【软考中级-软件设计师】day4:数据结构-线性表、单链表、栈和队列、串

大纲 线性结构 顺序存储和链式存储区别 单链表的插入和删除 真题 栈和队列 真题 串

kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?

背景 在最近学习k8s的过程中,发现kubectl&kubelet&rancher&helm&kubeadm这几个命令怎么在交错使用,他们究竟是什么关系?他们分别应该在什么情况下使用呢?这里我进行了简单的总结,做个区分。 各工具说…

性能分析与调优: Linux 实现 缺页剖析与火焰图

目录 一、实验 1.环境 2.缺页(RSS增长)剖析与火焰图 一、实验 1.环境 (1)主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 prometheus、node_exporter 192.168.204.18grafana监测GUIgrafana192.168.204.19agent 监测 主机 node_exporter…

实现锚点定位功能(React/Vue)

前言 最近接到一个需求,修改某某页面,增加XXX功能,并实现个锚点功能。做产品就是不断优化,增加功能的过程。实现锚点的方式很多, 很多UI库也提供了组件,可以根据自己的需求调整一下组件库也可以实现&#…

vulhub中的Apache HTTPD 换行解析漏洞(CVE-2017-15715)详解

Apache HTTPD 换行解析漏洞(CVE-2017-15715) 1.cd到CVE-2017-15715 cd vulhub/httpd/CVE-2017-15715 2.运行docker-compose build docker-compose build 3.运行docker-compose up -d 4.查看docker-compose ps 5.访问 出现这个表示安装成功 6.漏洞复现…

Linux系统操作命令

Linux管理 在线查询Linux命令: https://www.runoob.com/linux/linux-install.htmlhttps://www.linuxcool.com/https://man.linuxde.net/ 1.Linux系统目录结构 Linux系统的目录结构是一个树状结构,每一个文件或目录都从根目录开始,并且根目…

MySQL语法练习-DML语法练习

文章目录 0、相关文章1、添加数据2、修改数据3、删除数据4、总结 0、相关文章 《MySQL练习-DDL语法练习》 1、添加数据 # 给指定字段添加数据 insert into 表名 (字段名1,字段名2,...) values(值1,值2...);# 给全部字段添加数据 insert into 表名 values(值1,值2,...);#批量…

Docker查看镜像的Dockerfile

前言 在使用Docker构建应用程序时,我们可以通过Dockerfile定义应用程序的环境,并将其打包成一个镜像。有时,我们可能需要查看一个已经构建好的镜像的Dockerfile,以了解镜像是如何构建的,或者进行后续的修改和调整。本…

python股票分析挖掘预测技术指标知识之蜡烛图指标(6)

本人股市多年的老韭菜,各种股票分析书籍,技术指标书籍阅历无数,萌发想法,何不自己开发个股票预测分析软件,选择python因为够强大,它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

利用格式工厂,做视频的剪辑

接到一个工作,一段视频中,需要抠除其中某一段 其实 剪映、苹果手机的视频编辑功能,都可以轻松搞定 只是清晰度会有损伤 而且对于太大的视频,苹果手机就没法处理了。 很多软件在导出高清视频时,需要会员收费&#xff0…

Java学习笔记-day02-在IDEA中使用git忽略提交.idea下的文件

1.在根目录.gitignore文件排除.idea目录 ### IntelliJ IDEA ### .idea2.使用重置Head还原已经add过的文件 创建项目时,可能会有.idea中的文件先add到git后再创建的.gitignore文件,导致文件commit时无法排除,如下所示。 使用重置Head将文件…

深度学习 常考简答题--[HBU]期末复习

目录 1.为什么要引用非线性激活函数? 2.什么是超参数?如何优化超参数? 3.线性回归通常使用平方损失函数,能否使用交叉熵损失函数? 4.平方损失函数为何不适用于解决分类问题?(和第3题一块复习) ​编辑 …

新年新风貌 苏州金龙蔚蓝公交护航高贸区“效率巴士”!

1月4日,由苏州市公交集团园区公司与园区高贸区管委会联合推出的4条“高贸区效率巴士”正式开行,这四条线路惠及包括苏州群策科技有限公司、荣旗工业科技有限公司等在内的20余家高贸区重点企业。线路开行5天来,效率巴士让不少企业员工感受到了…

电口模块SFP-GE-T:实现光口与电口之间的转换

电口模块是一种用于实现光口转电口功能的设备,在网络通信中起到重要作用。电口模块没有光电转换的过程,只是传输电信号。本文介绍电口模块的作用、分类、以及使用方法。 一、什么是电口模块 电口模块又被称为光转电模块,它是一种支持热插拔…

学校服务器安装anaconda并配置pytorch环境

学校服务器安装anaconda并配置pytorch环境 1.下载Anaconda2.传到xftp中3.在终端运行脚本命令4.安装pytorch4.1 查看cuda版本4.2 创建自己的环境4.3 下载pytorch4.4 验证pytorch是否安装成功 参考视频:远程服务器安装anaconda并配置pytorch环境 使用服务器运行项目&a…

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》(A)试题(开卷) 题目:以某一 web 系统为测试对象,完成以下文档的编写: (满分 100 分) (1&am…