首页 > 其他分享 >swagger-ui-react 前端引用草稿

swagger-ui-react 前端引用草稿

时间:2023-03-21 11:36:05浏览次数:46  
标签:SwaggerUI swaggerUi react API 文档 currentApi ui swagger

前言

SwaggerUI是一个React组件,它接受一个配置对象作为其唯一的属性。这个配置对象可以包含多个属性来自定义SwaggerUI的行为和外观。以下是SwaggerUI支持的主要属性及其说明:

主要属性 说明
url: 指定要显示的Swagger规范文件的URL或本地文件的路径。
spec: 指定Swagger规范对象,而不是通过URL加载。如果同时提供了url和spec,则spec将覆盖url。
dom_id: 指定要将SwaggerUI渲染到的DOM元素的ID。
layout: 指定SwaggerUI的布局配置。可以是默认的“BaseLayout”或您自己定义的自定义布局。
docExpansion: 指定API文档的初始展开状态。可选值为“none”(默认值)、“list”和“full”。
deepLinking: 指定是否启用深度链接,使用户可以从当前页面共享特定资源的链接。
requestInterceptor: 指定用于拦截SwaggerUI中发出的所有请求的函数。
responseInterceptor: 指定用于拦截SwaggerUI中接收的所有响应的函数。
supportedSubmitMethods: 指定在SwaggerUI操作中显示哪些HTTP方法(例如GET、POST、PUT等)的数组。
validatorUrl: 指定用于验证规范的URL或本地文件的路径。
oauth2RedirectUrl: 指定OAuth2回调URL的URL路径,以便在请求OAuth2令牌时进行重定向。
plugins: 指定用于SwaggerUI的插件数组。
presets: 指定要预定义的SwaggerUI配置的名称数组。可以是“SwaggerUIStandalonePreset”、“SwaggerUIBundlePreset”或您自己定义的自定义预设。

下面是一个使用swagger-ui-react 4.2.1版本的自定义layout的示例代码

import React, { Component } from "react";
import SwaggerUI from "swagger-ui-react";
import "swagger-ui-react/swagger-ui.css";

class CustomLayout extends Component {
  render() {
    return (
      <div>
        <div className="header">
          <h1>Custom Header</h1>
        </div>
        <div className="swagger-container">
          <SwaggerUI {...this.props} />
        </div>
        <div className="footer">
          <h1>Custom Footer</h1>
        </div>
      </div>
    );
  }
}

class App extends Component {
  render() {
    return (
      <div className="App">
        <SwaggerUI
          url="https://petstore.swagger.io/v2/swagger.json"
          docExpansion="none"
          layout={CustomLayout}
        />
      </div>
    );
  }
}

export default App;

在这个示例中,我们创建了一个CustomLayout组件,它将作为SwaggerUI组件的layout属性值传递。在CustomLayout组件中,我们定义了一个自定义的头部和底部,并使用{...this.props}语法将所有传递给CustomLayout组件的属性传递给SwaggerUI组件。

在App组件中,我们将CustomLayout组件传递给SwaggerUI组件的layout属性,以便在SwaggerUI组件中使用自定义的布局。我们还通过url属性指定了要加载的Swagger API文档的URL,以及通过docExpansion属性设置了文档的默认扩展。

发现者何种自定义方式好像不起什么作用!

docExpansion

SwaggerUI中的docExpansion属性用于配置API文档的初始展开状态。它控制在SwaggerUI中显示的API文档的呈现方式。

该属性有以下几个可选值:

none: 默认值,所有操作都将被折叠,并且用户需要手动单击每个操作以查看其细节。
list: 将显示所有操作的摘要,并将其分组到其各自的资源中。
full: 将显示所有操作和资源的所有详细信息。

您可以将docExpansion属性传递给SwaggerUI组件的配置对象中,如下所示:

const ui = SwaggerUI({
  // ...
  docExpansion: 'list', // 将所有操作摘要显示为列表
  // ...
});

onComplete

SwaggerUI提供了onComplete回调函数,该函数在文档加载完毕并呈现在UI中后被触发。您可以在该回调函数中获取当前API文档头的信息,以便进行进一步处理。

例如,以下代码演示了如何在onComplete回调函数中获取当前API文档头的信息并将其打印到控制台:

const ui = SwaggerUI({
  // ...
  onComplete: (swaggerApi, swaggerUi) => {
    const currentApi = swaggerUi.getCurrentApi();
    console.log(`当前API文档头信息: ${currentApi.info.title} - ${currentApi.info.version}`);
  }
});

在这个例子中,swaggerUi.getCurrentApi()方法返回当前显示的Swagger规范对象。您可以从Swagger规范对象中获取各种信息,例如文档标题和版本等。

如果您需要在用户与SwaggerUI交互时获取API文档头的信息,例如当用户单击操作时,您可以使用SwaggerUI提供的事件来注册回调函数。例如,以下代码演示了如何在单击操作时获取当前API文档头的信息并将其打印到控制台:

const ui = SwaggerUI({
  // ...
  onComplete: (swaggerApi, swaggerUi) => {
    // 注册单击操作事件
    swaggerUi.getSystem().on('opblock-select', (e) => {
      const currentApi = swaggerUi.getCurrentApi();
      console.log(`当前API文档头信息: ${currentApi.info.title} - ${currentApi.info.version}`);
    });
  }
});

在这个例子中,swaggerUi.getSystem().on('opblock-select', callback)方法注册一个事件处理程序,在用户单击操作时被触发。
在事件处理程序中,我们可以使用前面提到的方法来获取当前API文档头的信息。

以下是一个完整的使用SwaggerUI的示例,其中包括使用docExpansion属性自定义API文档的默认展开状态和使用onComplete回调函数获取当前API文档头的信息。

import React, { useState } from 'react';
import SwaggerUI from 'swagger-ui-react';
import 'swagger-ui-react/swagger-ui.css';

function App() {
  const [currentApi, setCurrentApi] = useState(null);

  const onComplete = (swaggerApi, swaggerUi) => {
    const api = swaggerUi.getCurrentApi();
    setCurrentApi(api);
  };

  return (
    <div className="App">
      {currentApi && (
        <h1>
          {currentApi.info.title} - {currentApi.info.version}
        </h1>
      )}
      <SwaggerUI
        url="https://petstore.swagger.io/v2/swagger.json"
        docExpansion="list"
        onComplete={onComplete}
      />
    </div>
  );
}

export default App;

在这个示例中,我们使用useState来存储当前API文档头的信息。
在onComplete回调函数中,我们使用swaggerUi.getCurrentApi()方法获取当前API文档头的信息,并使用setCurrentApi更新状态。
然后,我们根据当前API文档头的信息来渲染一个标题。
最后,我们将url和docExpansion属性传递给SwaggerUI组件,以便呈现Swagger规范文件并自定义API文档的默认展开状态。

标签:SwaggerUI,swaggerUi,react,API,文档,currentApi,ui,swagger
From: https://www.cnblogs.com/tommymarc/p/17239351.html

相关文章

  • react的diff算法
    diff策略React用三大策略将O(n^3)复杂度转化为O(n)复杂度策略一(treediff):WebUI中DOM节点跨层级的移动操作特别少,可以忽略不计。策略二(componentdiff):拥有相......
  • Vue+Element UI 弹出文本框
    效果: 代码:/*打开审批弹窗*/openAudit(row){this.$confirm('请确认审核结果','审核',{distinguishCancelAndClose:true,confirm......
  • python 报错"ValueError: dictionary update sequence element #0 has length 6; 2 is
    python报错"ValueError:dictionaryupdatesequenceelement#0haslength6;2isrequired"现象   分析根据报错分析,应该是字典或格式有问题,检查发现LOGGING......
  • [React] Flushing state updates synchronously with flushSync
    InReact,everyupdateissplitintwophases:During render, Reactcallsyourcomponentstofigureoutwhatshouldbeonthescreen.During commit, React......
  • 【Unity3D】GUI控件
    1前言​Unity3D提供了GUI、NGUI、UGUI等图形系统,以增强玩家与游戏的交互性。GUI在编译时不能可视化,在运行时才能可视化。GUI代码需要在OnGUI函数中调用才能......
  • 【Unity3D】UGUI之Text
    1Text简介​UGUI概述中介绍了Canvas渲染模式、RectTransform组件、锚点(Anchor)等,本文将介绍UGUI中的Text控件。​在Hierarchy窗口右键,选择UI列表里......
  • 【Unity3D】UGUI概述
    1UGUI与GUI区别​GUI控件在编译时不能可视化,并且界面不太美观,在实际应用中使用的较少。UGUI在编译时可视化,界面美观,实际应用较广泛。2Canvas渲染模式(Render......
  • 【Unity3D】UGUI之Button
    1Button属性面板​在Hierarchy窗口右键,选择UI列表里的Button控件,即可创建Button控件,选中创建的Button控件,按键盘【T】键,可以调整Button控件的大小和位置......
  • 【Unity3D】UGUI之Image和RawImage
    1纹理(Texture)​Image控件和RawImage控件都是承载渲染图片的控件,都需要指定一个纹理(Texture)图片。在Assets窗口选中一张图片,在Inspector窗口的参数设置面板可......
  • 【Unity3D】UGUI之Slider
    1Slider属性面板​在Hierarchy窗口右键,选择UI列表里的Slider控件,即可创建Slider控件,选中创建的Slider控件,按键盘【T】键,可以调整Slider控件的大小和位置......