您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
先搜索服务,也可以搜索当前服务下的api路径;复制api路径和小驼峰函数名
- // ==UserScript==
- // @name swagger-quick
- // @namespace http://tampermonkey.net/
- // @version 0.1.2
- // @description 先搜索服务,也可以搜索当前服务下的api路径;复制api路径和小驼峰函数名
- // @author hoyche
- // @license MIT
- // @include /.*\/swagger-ui\.html.*/
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- $(function(){
- let timer = setInterval(()=>{
- if ($("#select_baseUrl option").length === 0) return;
- clearTimeout(timer);
- // 创建左侧控制台
- const ctrl = $(`<div class="ctrl-wrap" style="position:fixed;left:0;top:100px;z-index:1;background-color: #fff;"><input type="text" placeholder="服务搜索" id="serviceIpt"/><div class="service-lists" style="margin-bottom: 30px;"></div><input type="text" placeholder="当前服务api搜索" id="apiIpt"><div class="api-lists">`);
- $("body").append(ctrl);
- // 获取所有api路径列表
- var observerOptions = {
- childList: true, // 观察目标子节点的变化,是否有添加或者删除
- }
- var observer = new MutationObserver(getApiOps);
- observer.observe($('#swagger-ui-container')[0], observerOptions);
- // 复制api路径和小驼峰函数名
- $('#swagger-ui-container').on('mouseenter','.operations>.operation',function(e){
- var apiEl = $(`<span style="color: red">复制api路径</span>`);
- var fnEl = $(`<span style="color: red;margin-left: 5px;">复制小驼峰函数名</span>`);
- let text = $('.path',e.currentTarget).text().replace(/[\n\s]/g,'');
- const url = $('#select_baseUrl').val().match(/\.com(\/[^/]+)/)[1] + text;
- apiEl.click(function(){
- copyContentH5(url)
- })
- fnEl.click(function(){
- copyContentH5(text.replace(/\/api\//,'').replace(/\/[^/]/g, function(s) {return s.slice(1).toUpperCase()}))
- })
- $('.heading>h3',e.currentTarget).append([apiEl,fnEl]);
- }).on('mouseleave','.operations>.operation',function(e){
- $('.heading>h3>.path',e.currentTarget).nextAll().remove();
- })
- // 服务列表
- let serviceOps = [];
- $("#select_baseUrl option").each(function(){
- serviceOps.push($(this).text());
- })
- // api路径列表
- let apiOps = [];
- // 输入服务过滤
- $("#serviceIpt").keyup(function() {
- let split = this.value.split(/\s+/);
- let res = new Set();
- for (let i = 0; split[i]; i++) {
- for (let j = 0; serviceOps[j]; j++) {
- if (~serviceOps[j].search(new RegExp(split[i]),'i')){
- res.add(serviceOps[j])
- }
- }
- }
- $(".service-lists").html(batHtml(res))
- })
- $(".service-lists").on('click','div',function(e){
- let url = $(e.currentTarget).text().match(/\((.+?)\)/)[1];
- $(`#select_baseUrl,#input_baseUrl`).val(url);
- $("#serviceIpt").val("");
- $(".service-lists").html("");
- swaggerUi.headerView.trigger("update-swagger-ui", {
- url: $("#input_baseUrl").val()
- })
- })
- // 输入api路径过滤
- $("#apiIpt").keyup(function() {
- let split = this.value.split(/\s+/);
- let res = new Set();
- for (let i = 0; split[i]; i++) {
- for (let j = 0; apiOps[j]; j++) {
- if (~apiOps[j].search(new RegExp(split[i],'i'))) {
- res.add(apiOps[j])
- }
- }
- }
- $(".api-lists").html(batHtml(res))
- })
- $(".api-lists").on('click','div',function(e){
- let url = $(e.currentTarget).text();
- let el = $(`.heading .path a.toggleOperation:contains('${url}'):first`);
- let elAni = el.closest('.heading');
- $("#apiIpt").val("");
- $(".api-lists").html("");
- el.closest('ul.endpoints').show();
- scrollTo(0,el.offset().top);
- //elAni.animate({backgroundColor: 'red'},function(){
- // elAni.animate({backgroundColor: 'transparent'})
- //});
- elAni.css({backgroundColor: 'red'});
- setTimeout(function(){
- elAni.css({backgroundColor: 'transparent'})
- },2000);
- })
- function batHtml(list) {
- let h = ''
- list.forEach(v => {
- h += `<div>${v}</div>`
- })
- return h
- }
- function getApiOps() {
- let set = new Set()
- $(`.heading .path a.toggleOperation`).each(function() {
- set.add($(this).text())
- });
- apiOps = [...set];
- // console.log(apiOps)
- }
- //h5复制文本到剪切板
- function copyContentH5(content) {
- var copyDom = document.createElement('div');
- copyDom.innerText=content;
- copyDom.style.position='absolute';
- copyDom.style.top='0px';
- copyDom.style.right='-9999px';
- document.body.appendChild(copyDom);
- //创建选中范围
- var range = document.createRange();
- range.selectNode(copyDom);
- //移除剪切板中内容
- window.getSelection().removeAllRanges();
- //添加新的内容到剪切板
- window.getSelection().addRange(range);
- //复制
- var successful = document.execCommand('copy');
- copyDom.parentNode.removeChild(copyDom);
- }
- },200)
- })
- // Your code here...
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址