index.html 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <!DOCTYPE HTML>
  2. <html lang="zh-CN" class="fh-jf">
  3. <head>
  4. <title>简易版Postman</title>
  5. <meta charset="UTF-8">
  6. <link rel="shortcut icon" href="../static/img/favicon.ico">
  7. <link rel="stylesheet" href="../static/vendor/jquery/jquery-ui.min.css">
  8. <link rel="stylesheet" href="index.css" />
  9. <script type="text/javascript" src="../static/vendor/evalCore.min.js"></script>
  10. <script type="text/javascript" src="../static/vendor/vue/vue.js"></script>
  11. </head>
  12. <body class="theme-default">
  13. <div class="wrapper" id="pageContainer">
  14. <div class="panel panel-default" style="margin-bottom: 0px;">
  15. <div class="panel-heading">
  16. <h3 class="panel-title">
  17. <a href="https://fehelper.com" target="_blank" class="x-a-high">
  18. <img src="../static/img/fe-16.png" alt="fehelper"/> FeHelper</a>:简易版Postman
  19. <a href="#" class="x-donate-link" @click="openDonateModal($event)"><i class="nav-icon">❤&nbsp;</i>打赏鼓励</a>
  20. <a class="x-other-tools" @click="openOptionsPage($event)"><i class="icon-plus-circle"></i> 探索更多实用工具 <span class="tool-market-badge">工具市场</span></a>
  21. </h3>
  22. </div>
  23. </div>
  24. <div class="panel-body mod-endecode">
  25. <!-- Mock服务器状态提示 -->
  26. <div class="alert alert-info" style="margin-bottom: 15px; padding: 10px 15px; border-radius: 4px; background-color: #d1ecf1; border: 1px solid #bee5eb; color: #0c5460;">
  27. <strong>🎉 本地Mock服务器已就绪!</strong>
  28. 点击下方按钮快速体验本地POST请求测试,无需真实后端服务器。
  29. <small style="display: block; margin-top: 5px; color: #6c757d;">
  30. 💡 提示:Mock服务器基于Service Worker实现,支持JSON和表单数据格式
  31. </small>
  32. </div>
  33. <div class="row mod-inputs">
  34. <div class="ui-mt-10">
  35. <label for="url">接口地址:</label>
  36. <input type="text" id="url" ref="url" v-model="urlContent" class="form-control f-url" placeholder="请输入Api地址">
  37. <span class="x-xdemo" @click="setDemo(1)">Get示例</span>
  38. <span class="x-xdemo" @click="setDemo(2)">Post示例</span>
  39. <span class="x-xdemo" @click="setDemo(3)">Mock登录API</span>
  40. <span class="x-xdemo" @click="setDemo(4)">Mock数据API</span>
  41. </div>
  42. <div class="ui-mt-10 u-p-c" v-if="urlParams.length">
  43. <table class="table table-bordered table-hover">
  44. <thead>
  45. <tr>
  46. <th>参数key</th>
  47. <th>参数value</th>
  48. </tr>
  49. </thead>
  50. <tbody>
  51. <tr v-for="param in urlParams">
  52. <th><input v-model="param.key" class="form-control f-header-key"/></th>
  53. <th><input v-model="param.value" class="form-control f-header-value"/></th>
  54. </tr>
  55. </tbody>
  56. </table>
  57. </div>
  58. <div class="ui-mt-10" v-cloak v-show="methodContent === 'POST'">
  59. <label for="param">请求参数:</label>
  60. <textarea type="text" v-model="paramContent" id="param" class="form-control f-param" placeholder="请输入参数"></textarea>
  61. <span class="x-xdemo" @click="transParamMode()">参数转<span v-html="paramModeText">JSON</span>格式</span>
  62. </div>
  63. <div class="ui-mt-10">
  64. <label for="param">加头信息:</label>
  65. <div style="display: inline-block;">
  66. <div v-for="(item,$index) in headerList" style="margin-top:2px">
  67. <input type="text" :id="'header_key_' + item" class="form-control f-header-key" placeholder="Content-Type"><input type="text" :id="'header_value_' + item" class="form-control f-header-value" placeholder="text/json; charset=utf-8">
  68. <span class="x-xdemo" v-if="$index==0" @click="addHeader">继续添加</span>
  69. <span class="x-xdemo" v-if="$index>0" @click="deleteHeader($event)">删除</span>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="ui-mt-10">
  74. <label for="method">请求方式:</label>
  75. <select id="method" v-model="methodContent" class="form-control f-method">
  76. <option value="GET">GET</option>
  77. <option value="POST">POST</option>
  78. <option value="HEAD">HEAD</option>
  79. <option value="PUT">PUT</option>
  80. <option value="DELETE">DELETE</option>
  81. </select>
  82. <div class="url-encode" v-cloak v-if="methodContent==='POST'">
  83. <input type="checkbox" name="urlencoded" id="urlencoded" value="1" v-model="urlencodedDefault">
  84. <label for="urlencoded">默认携带Header:<i>Content-Type: application/x-www-form-urlencoded</i></label>
  85. </div>
  86. </div>
  87. <div class="ui-mt-10">
  88. <input class="btn btn-success" type="button" value="发送请求" @click="postman()">
  89. </div>
  90. </div>
  91. <div ref="resultContainer" class="row hide">
  92. <div id="tabs">
  93. <ul class="the-tabs">
  94. <li><a href="#tab-content">数据</a></li>
  95. <li><a href="#tab-json">JSON</a></li>
  96. <li><a href="#tab-header">响应头</a></li>
  97. </ul>
  98. <div id="tab-content" class="mod-tab">{{resultContent}}</div>
  99. <div class="mod-tab" id="tab-json">
  100. <div class="x-toolbar">
  101. <span class="x-sort">
  102. <span class="x-stitle">排序:</span>
  103. <label for="sort_null">默认</label>
  104. <input type="radio" name="jsonsort" id="sort_null" value="0" checked>
  105. <label for="sort_asc">升序</label>
  106. <input type="radio" name="jsonsort" id="sort_asc" value="1">
  107. <label for="sort_desc">降序</label>
  108. <input type="radio" name="jsonsort" id="sort_desc" value="-1">
  109. </span>
  110. <span id="optionBar"></span>
  111. </div>
  112. <div id="formattingMsg"><span class="x-loading"></span>格式化中...</div>
  113. <div id="jfCallbackName_start" class="callback-name" v-html="jfCallbackName_start"></div>
  114. <div id="jfContent" v-html=" errorMsgForJson || resultContent"></div>
  115. <pre id="jfContent_pre"></pre>
  116. <div id="jfCallbackName_end" class="callback-name" v-html="jfCallbackName_end"></div>
  117. </div>
  118. <div id="tab-header" class="mod-tab">
  119. <table class="table table-hover">
  120. <thead>
  121. <tr>
  122. <th>序号</th>
  123. <th>头信息</th>
  124. <th>具体内容</th>
  125. </tr>
  126. </thead>
  127. <tbody>
  128. <tr v-for="(h,index) in responseHeaders">
  129. <td>{{index+1}}</td>
  130. <td>{{h[0]}}</td>
  131. <td>{{h[1]}}</td>
  132. </tr>
  133. </tbody>
  134. </table>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. <script src="../static/vendor/jquery/jquery-3.3.1.min.js"></script>
  141. <script src="../static/vendor/jquery/jquery.extend.js"></script>
  142. <script src="../static/vendor/jquery/jquery-ui.min.js"></script>
  143. <script src="../json-format/json-bigint.js"></script>
  144. <script src="../json-format/format-lib.js"></script>
  145. <script src="../json-format/json-abc.js"></script>
  146. <script type="text/javascript" src="index.js"></script>
  147. </body>
  148. </html>