Yapi接口数据一键复制
当前为
// ==UserScript==
// @name YapiCopy
// @namespace http://tampermonkey.net/
// @version 0.0.2
// @description Yapi接口数据一键复制
// @author Enjoy
// @icon https://foruda.gitee.com/avatar/1671100286067517749/4867929_enjoy_li_1671100285.png!avatar60
// @match *://yapi*
// @grant GM_addElement
// @grant GM_addStyle
// @grant GM_setClipboard
// @license GPL License
// ==/UserScript==
function cellecteData() {
let desc = document.querySelector('.colName').innerText || ''
let values = document.querySelectorAll('.colValue')
console.log('values=',values)
let method = values[3]?.innerText.toLocaleLowerCase() || ''
let apiUrl = values[4].innerText || ''
let paramsStr = document.querySelectorAll('table')[1].innerText || ''
;['\n','非必须','必须','format: int32','\t'].forEach(item => {
paramsStr = paramsStr.replace(new RegExp(item,'g'),'')
})
;['integer','string'].forEach(item => {
paramsStr = paramsStr.replace(new RegExp(item,'g'),`:${item},// `)
})
paramsStr.replace(/(,\/\/[^a-zA-Z]+)/g,'$1 \n')
let template = `
/**
* @description ${desc}
* @see ${apiUrl}
* @param { {
${paramsStr}
} } data
*/
export function ${apiUrl.replace(/^.*\//,'')}(data) {
return http.${method}('${apiUrl}',data)
}
`
return template
}
function createBtn(options = {}) {
let { selector = 'yapiShuctCopy' } = options
let btnDom = document.querySelector(`#${selector}`)
if (btnDom) return btnDom
btnDom = document.createElement('div')
btnDom.innerHTML = `
\uf0c5
<style>
#yapiShuctCopy {
width: 20px;
height: 35px;
opacity: 0.2;
background: #0b7d1e;
font-weight: 800;
display: flex;
align-items: center;
justify-content: center;
border-radius: 35px 0 0 35px;
cursor: pointer;
color: #fff;
transition: all 0.2s;
font-size: 18px;
position: fixed;
right: 0;
top: 70px;
}
#yapiShuctCopy:hover {
opacity: 0.5;
width: 35px;
}
`
btnDom.setAttribute('id',selector)
btnDom.setAttribute('title','一键复制')
// btnDom.style.cssText = ''
document.body.appendChild(btnDom)
btnDom.addEventListener('click',() => {
doCopy(cellecteData())
})
}
createBtn()
function doCopy(newValue,selector = 'textarea') {
let textarea = document.querySelector(`#${selector}`)
if (!textarea) {
textarea = document.createElement('textarea')
textarea.style.cssText = 'position: absolute;left: -500px;top: -500px;max-width: 50px;opacity: 0;'
document.body.appendChild(textarea)
}
textarea.value = newValue
textarea.select()
setTimeout(() => {
document.execCommand('Copy')
},200)
}