2026-04-17 20:14:15 +08:00

157 lines
4.4 KiB
HTML

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API 调试界面</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
display: flex;
flex-direction: column;
min-height: 100vh;
}
.container {
display: flex;
flex-direction: column;
flex-grow: 1;
}
form {
display: flex;
flex-direction: row;
align-items: center;
gap: 10px;
margin-bottom: 10px;
}
input, button {
padding: 10px;
box-sizing: border-box;
flex: 1;
}
button {
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
.data-result {
display: flex;
flex-direction: row;
flex-grow: 1;
}
.data-result > div {
display: flex;
flex-direction: column;
flex-grow: 1;
padding: 10px;
box-sizing: border-box;
}
.data-result label {
margin-bottom: 10px;
}
#data, #result {
height: 100%;
box-sizing: border-box;
}
#data {
border-right: 1px solid #ccc;
}
</style>
</head>
<body>
<div class="container">
<form onsubmit="event.preventDefault(); sendRequest();">
<label for="uri">uri</label>
<input type="text" id="uri" name="uri" value="/api/song/lyric/v1">
<label for="crypto">crypto</label>
<select id="crypto" name="crypto">
<option value="weapi">weapi</option>
<option value="eapi">eapi</option>
<option value="api">api</option>
<option value="linuxapi">linuxapi</option>
<option value="" selected>(默认)</option>
</select>
<button type="submit">发送</button>
</form>
<div class="data-result">
<div>
<label for="result">result</label>
<textarea id="result" name="result"></textarea>
</div>
<div>
<label for="data">data</label>
<textarea id="data" name="data">
{
"cp": false,
"id": "2058263032",
"kv": 0,
"lv": 0,
"rv": 0,
"tv": 0,
"yrv": 0,
"ytv": 0,
"yv": 0
}</textarea>
</div>
</div>
</div>
<script src="https://fastly.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
async function sendRequest() {
document.getElementById('result').value = ""
const uri = document.getElementById('uri').value;
const crypto = document.getElementById('crypto').value;
const data = document.getElementById('data').value;
try {
const res = await axios({
url: `/api?timestamp=${Date.now()}`,
method: 'post',
data: {
uri: uri,
data: JSON.parse(data),
crypto: crypto,
},
});
document.getElementById('result').value = JSON.stringify(res.data, null, 2);
} catch (error) {
document.getElementById('result').value = 'Request failed: ' + error.message;
}
}
(function fillFromQuery() {
const params = new URLSearchParams(window.location.search);
if (!params.toString()) return;
const uri = params.get('uri');
const crypto = params.get('crypto');
const dataParam = params.get('data');
if (uri) {
document.getElementById('uri').value = uri;
}
if (crypto) {
const cryptoSelect = document.getElementById('crypto');
if ([...cryptoSelect.options].some((opt) => opt.value === crypto)) {
cryptoSelect.value = crypto;
}
}
if (dataParam) {
const decoded = dataParam;
try {
document.getElementById('data').value = JSON.stringify(
JSON.parse(decoded),
null,
2,
);
} catch (error) {
document.getElementById('data').value = decoded;
}
}
})();
</script>
</body>
</html>