api.html 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>API 调试界面</title>
  7. <style>
  8. body {
  9. font-family: Arial, sans-serif;
  10. margin: 20px;
  11. display: flex;
  12. flex-direction: column;
  13. min-height: 100vh;
  14. }
  15. .container {
  16. display: flex;
  17. flex-direction: column;
  18. flex-grow: 1;
  19. }
  20. form {
  21. display: flex;
  22. flex-direction: row;
  23. align-items: center;
  24. gap: 10px;
  25. margin-bottom: 10px;
  26. }
  27. input, button {
  28. padding: 10px;
  29. box-sizing: border-box;
  30. flex: 1;
  31. }
  32. button {
  33. background-color: #4CAF50;
  34. color: white;
  35. border: none;
  36. cursor: pointer;
  37. }
  38. .data-result {
  39. display: flex;
  40. flex-direction: row;
  41. flex-grow: 1;
  42. }
  43. .data-result > div {
  44. display: flex;
  45. flex-direction: column;
  46. flex-grow: 1;
  47. padding: 10px;
  48. box-sizing: border-box;
  49. }
  50. .data-result label {
  51. margin-bottom: 10px;
  52. }
  53. #data, #result {
  54. height: 100%;
  55. box-sizing: border-box;
  56. }
  57. #data {
  58. border-right: 1px solid #ccc;
  59. }
  60. </style>
  61. </head>
  62. <body>
  63. <div class="container">
  64. <form onsubmit="event.preventDefault(); sendRequest();">
  65. <label for="uri">uri</label>
  66. <input type="text" id="uri" name="uri" value="/api/song/lyric/v1">
  67. <label for="crypto">crypto</label>
  68. <select id="crypto" name="crypto">
  69. <option value="weapi">weapi</option>
  70. <option value="eapi">eapi</option>
  71. <option value="api">api</option>
  72. <option value="linuxapi">linuxapi</option>
  73. <option value="" selected>(默认)</option>
  74. </select>
  75. <button type="submit">发送</button>
  76. </form>
  77. <div class="data-result">
  78. <div>
  79. <label for="result">result</label>
  80. <textarea id="result" name="result"></textarea>
  81. </div>
  82. <div>
  83. <label for="data">data</label>
  84. <textarea id="data" name="data">
  85. {
  86. "cp": false,
  87. "id": "2058263032",
  88. "kv": 0,
  89. "lv": 0,
  90. "rv": 0,
  91. "tv": 0,
  92. "yrv": 0,
  93. "ytv": 0,
  94. "yv": 0
  95. }</textarea>
  96. </div>
  97. </div>
  98. </div>
  99. <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  100. <script>
  101. async function sendRequest() {
  102. document.getElementById('result').value = ""
  103. const uri = document.getElementById('uri').value;
  104. const crypto = document.getElementById('crypto').value;
  105. const data = document.getElementById('data').value;
  106. try {
  107. const res = await axios({
  108. url: `/api?timestamp=${Date.now()}`,
  109. method: 'post',
  110. data: {
  111. uri: uri,
  112. data: JSON.parse(data),
  113. crypto: crypto,
  114. },
  115. });
  116. document.getElementById('result').value = JSON.stringify(res.data, null, 2);
  117. } catch (error) {
  118. document.getElementById('result').value = 'Request failed: ' + error.message;
  119. }
  120. }
  121. </script>
  122. </body>
  123. </html>