news 2026/6/2 10:38:21

REST API 测试客户端:开发调试的“万能遥控器”(附完整代码实现)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
REST API 测试客户端:开发调试的“万能遥控器”(附完整代码实现)

REST API 测试客户端:开发调试的“万能遥控器”

前后端分离开发时,前端等后端接口写完才能联调,后端等前端写完才能测试,双方干等。后来我用curl在命令行里测,但每次要写一堆参数,记不住。于是我做了一个在线的 REST API 测试客户端,支持 GET、POST、PUT、DELETE、PATCH,可以自定义 Headers 和 Body,还能格式化响应 JSON。这篇文章详细介绍这个工具的使用方法,以及如何自己实现一个类似的客户端(含前端代码和后端代理示例)。

本文工具由 VidDown 提供—— 一个目前免费、无需登录、纯前端处理的在线工具集。除了 API 测试,还提供视频解析、JSON 格式化、PDF 合并等 20+ 实用功能。
🔧 本文专属工具:REST API 测试客户端

一、这个工具能做什么?

REST API 测试客户端用于向任何 HTTP 端点发送请求,并查看响应详情。

  • 支持常见 HTTP 方法:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS。
  • 自定义请求头:以 JSON 格式输入,如{"Authorization": "Bearer token", "Content-Type": "application/json"}
  • 请求体支持:适用于 POST、PUT、PATCH 等方法,可输入 JSON、文本或表单数据。
  • 响应展示:状态码、响应头、响应体(自动高亮或格式化)。
  • 本地处理:前端直接发送fetch请求,不经过第三方服务器。

适用场景:

  • 开发时测试自己写的 API 是否正常。
  • 调试第三方接口,确认请求格式和返回数据。
  • 学习 HTTP 协议,观察不同方法、状态码的行为。

二、如何使用这个工具?

2.1 基本步骤

  1. 选择 HTTP 方法:从下拉框中选择(默认 GET)。
  2. 输入 URL:完整的 API 地址,例如https://jsonplaceholder.typicode.com/posts/1
  3. (可选)填写请求头:以 JSON 对象格式输入,例如{"Authorization": "Bearer 123"}。工具会自动解析并设置到请求中。
  4. (可选)填写请求体:对于 POST/PUT/PATCH,可在文本框输入请求体内容,支持 JSON、XML、纯文本等。
  5. 点击「发送请求」,右侧显示响应状态码和响应体。

2.2 注意事项

  • CORS 限制:由于浏览器的同源策略,直接从前端发送请求到跨域 API 可能会被阻止。解决方案:
    • 使用支持 CORS 的 API(如jsonplaceholder.typicode.com)。
    • 通过后端代理转发请求(本工具暂未内置代理,但下文会给出代理代码)。
  • 请求体格式:如果 Content-Type 为application/json,请确保输入合法的 JSON 字符串。

三、完整代码实现(从零搭建一个 API 测试客户端)

如果你也想自己实现一个类似的工具,以下是完整的前端代码(HTML + JS)以及可选的 CORS 代理后端。

3.1 前端核心:发送 HTTP 请求(使用fetch

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>REST API 测试客户端</title><style>/* 简单样式,可自行调整 */*{box-sizing:border-box;}body{font-family:monospace;padding:20px;}.container{display:flex;gap:20px;flex-wrap:wrap;}.request-panel{flex:1;min-width:300px;}.response-panel{flex:1;min-width:300px;background:#f5f5f5;padding:10px;border-radius:5px;}textarea, input, select{width:100%;margin-bottom:10px;padding:8px;font-family:monospace;}pre{white-space:pre-wrap;background:#fff;padding:10px;border-radius:4px;}button{background:#007bff;color:white;border:none;padding:8px 16px;cursor:pointer;}</style></head><body><h1>REST API 测试客户端</h1><divclass="container"><divclass="request-panel"><selectid="method"><optionvalue="GET">GET</option><optionvalue="POST">POST</option><optionvalue="PUT">PUT</option><optionvalue="DELETE">DELETE</option><optionvalue="PATCH">PATCH</option></select><inputtype="text"id="url"placeholder="https://api.example.com/endpoint"value="https://jsonplaceholder.typicode.com/posts/1"><textareaid="headers"rows="3"placeholder='请求头 (JSON格式)&#10;{"Content-Type": "application/json"}'>{}</textarea><textareaid="body"rows="5"placeholder='请求体 (Body)'></textarea><buttonid="sendBtn">发送请求</button></div><divclass="response-panel"><h3>响应状态码:<spanid="status">-</span></h3><preid="response">等待请求...</pre></div></div><script>constsendBtn=document.getElementById('sendBtn');constmethodEl=document.getElementById('method');consturlEl=document.getElementById('url');constheadersEl=document.getElementById('headers');constbodyEl=document.getElementById('body');conststatusSpan=document.getElementById('status');constresponsePre=document.getElementById('response');sendBtn.addEventListener('click',async()=>{constmethod=methodEl.value;consturl=urlEl.value.trim();letheaders={};try{headers=JSON.parse(headersEl.value||'{}');}catch(e){alert('请求头 JSON 格式错误');return;}constbody=bodyEl.value;try{constfetchOptions={method,headers,};if(method!=='GET'&&method!=='HEAD'){fetchOptions.body=body;}constresponse=awaitfetch(url,fetchOptions);statusSpan.innerText=`${response.status}${response.statusText}`;constresponseText=awaitresponse.text();// 尝试格式化 JSONtry{constjson=JSON.parse(responseText);responsePre.innerText=JSON.stringify(json,null,2);}catch{responsePre.innerText=responseText;}}catch(error){statusSpan.innerText='请求失败';responsePre.innerText=error.message;console.error(error);}});</script></body></html>

3.2 解决 CORS 问题:Node.js 代理服务器

如果前端直接请求遇到 CORS 错误,可以设置一个后端代理来转发请求。以下是一个简单的 Express 代理:

// proxy-server.jsconstexpress=require('express');constcors=require('cors');constaxios=require('axios');constapp=express();app.use(cors());// 允许所有跨域请求app.use(express.json());// 解析 JSON 请求体app.use(express.text());// 解析纯文本// 代理端点app.all('/proxy',async(req,res)=>{const{method,url,headers,body}=req.body;try{constresponse=awaitaxios({method,url,headers,data:body,validateStatus:()=>true// 任何状态码都接受});res.json({status:response.status,statusText:response.statusText,headers:response.headers,data:response.data});}catch(error){res.status(500).json({error:error.message});}});app.listen(3000,()=>console.log('Proxy server running on port 3000'));

前端修改 fetch 请求指向代理服务器:

constproxyUrl='http://localhost:3000/proxy';constresponse=awaitfetch(proxyUrl,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({method,url,headers,body})});constresult=awaitresponse.json();statusSpan.innerText=`${result.status}${result.statusText}`;responsePre.innerText=typeofresult.data==='object'?JSON.stringify(result.data,null,2):result.data;

四、踩坑汇总(真实遇到过)

  1. 预检请求(OPTIONS)失败
    现象:POST 请求时浏览器先发 OPTIONS 请求,后端没有正确响应,导致实际请求被阻止。
    解决:后端需要设置响应头 Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers。如果是代理服务器,则转发时可以绕过。

  2. 请求头中的 Content-Type 不正确
    现象:后端无法解析请求体,返回 400 或 415。
    解决:确保手动设置的 Content-Type 与实际请求体格式一致。例如发送 JSON 数据时,设置 “Content-Type”: “application/json”。

  3. 响应体很大导致页面卡顿
    现象:接口返回几 MB 的 JSON,浏览器渲染慢。
    解决:限制响应体显示大小(截断),或使用虚拟滚动。本工具目前会完整显示,但建议测试时选择合适接口。

  4. 携带 Cookie 的跨域请求
    场景:需要发送携带认证 Cookie 的请求。
    解决:在 fetch 中添加 credentials: ‘include’,同时后端必须设置 Access-Control-Allow-Credentials: true 且 Access-Control-Allow-Origin 不能为 *。本工具默认不携带,高级功能可扩展。

五、与同类工具对比

工具优点缺点
本工具轻量、免费、无登录、代码开源不支持自动保存历史、无环境变量
Postman功能强大,环境管理,自动化测试重量级,需安装客户端
Insomnia开源,支持 GraphQL同上
curl 命令行极轻量,脚本化学习曲线,参数难记

本工具适合临时快速测试,尤其是当你不方便打开 Postman 或在手机上需要测一个 API 时。

六、后续可能的增强

  • 请求历史记录:保存最近发送的请求,方便复用。

  • 环境变量:支持 {{baseUrl}} 等变量替换。

  • 响应体语法高亮:对 JSON/XML/HTML 进行着色。

  • 请求超时控制:可设置超时时间(默认依赖浏览器)。

七、总结

REST API 测试客户端是开发调试的必备工具。通过本文提供的代码,你可以轻松搭建一个自己的测试工具,或使用 VidDown 上的现成版本。

如果你还没试过,现在就去 https://www.viddown.cn/tools/rest-api-client/ 体验一下。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 10:37:44

飞书文档批量导出完整指南:3步实现高效文档迁移与备份

飞书文档批量导出完整指南&#xff1a;3步实现高效文档迁移与备份 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 如果你正在为飞书文档的批量迁移、备份或归档而烦恼&#xff0c;feishu-doc-exp…

作者头像 李华
网站建设 2026/6/2 10:37:03

NASA大气参数计算器停服后,手把手教你用USGS Landsat Collection 2地表温度成品数据(附ENVI实操)

NASA大气参数计算器停服后的应急方案&#xff1a;USGS Landsat地表温度数据全流程解析 当NASA大气参数计算器在2024年1月停止服务后&#xff0c;许多依赖该工具进行地表温度(LST)研究的用户陷入了困境。本文将详细介绍如何利用USGS Landsat Collection 2地表温度成品数据作为替…

作者头像 李华
网站建设 2026/6/2 10:35:46

别急着卸载!Win10下让IE浏览器“复活”的3个关键设置(附Edge共存方案)

企业级IE兼容方案&#xff1a;Win10下实现IE与Edge无缝共存的深度指南在数字化转型浪潮中&#xff0c;许多企业仍依赖基于IE浏览器开发的内部系统、财务软件或政府服务平台。微软Edge虽然性能卓越&#xff0c;但面对这些遗留系统时往往力不从心。本文将揭示三种专业级解决方案&…

作者头像 李华
网站建设 2026/6/2 10:35:42

分布式系统核心:从逻辑时钟到Paxos共识算法的演进与实践

1. 从真空管到图灵奖&#xff1a;Leslie Lamport的传奇之路在计算机科学的殿堂里&#xff0c;有些名字如同基石&#xff0c;奠定了我们今日数字世界的运行逻辑。Leslie Lamport便是其中之一。如果你用过LaTeX撰写过学术论文&#xff0c;你的工作便受益于他的贡献&#xff1b;如…

作者头像 李华
网站建设 2026/6/2 10:34:22

Kiro反代Claude模型给Claude Code使用,kiro-account-manager一键搞定

上篇说了怎么白嫖Kiro的Claude 4.7模型,很多朋友问能不能把Kiro的额度转到Claude Code里用。答案是可以的,核心就是反代——用一个中间软件把Kiro里的模型接口暴露出来,然后在Claude Code里指向这个接口就行。 安装反代工具 翻了一圈GitHub,最后选了 kiro-account-manager…

作者头像 李华