HTTP 请求代码生成器

统一配置请求参数,一键生成 5 种主流语言客户端调用代码: cURL(命令行)、JavaScript fetch(浏览器原生)、 axios(主流第三方库)、Python requestsGo net/http。支持 4 种认证方式 (无认证 / Basic / Bearer Token / API Key), 5 种请求体格式(JSON / Form-Data / x-www-form-urlencoded / Raw / 无), 高级选项含超时、重定向跟随、SSL 证书校验。内置 6 个高频预设场景, 覆盖 GET 查询、POST 创建、PUT 更新、表单提交、Basic 认证、API Key 调用。 适用于跨语言 API 调用代码转换、客户端 SDK 文档示例生成、Postman 替代、 接口调试与教学等场景,所有配置仅在浏览器本地处理,零上传零追踪。

预设场景:

请求

Headers

认证

JWT / OAuth2 令牌

请求体

application/json,RESTful API 最常用

高级选项

命令行工具,通用标准
curl -X POST 'https://api.example.com/v1/users' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.token' \
  -H 'Content-Type: application/json' \
  -d $'{\n  "name": "张三",\n  "email": "zhangsan@example.com",\n  "age": 28\n}' \
  --max-time 30 \
  -L

常见问题

这个工具和 HTTP Header 工具有什么区别?应该用哪个?

两个工具定位互补,按需求选择:
HTTP Header 工具/http-headers): 专注Header 本身,内置 40+ 常用 Header 速查表,支持解析原始报文与 cURL -H 文本, 生成器仅支持 cURL + JavaScript fetch 两种语言,适合 Header 学习与调试场景。
HTTP 请求代码生成器(本工具): 专注多语言代码生成,支持 cURL / fetch / axios / Python requests / Go net/http 共 5 种语言,认证方式与请求体格式更丰富(4 种认证 + 5 种请求体),含超时/重定向/SSL 高级选项, 适合跨语言 API 调用代码转换、SDK 文档示例生成、接口调试等场景。
简单需求(仅需 cURL/fetch)用 Header 工具的生成器即可; 跨语言代码转换、多认证方式、多请求体格式场景使用本工具。

Basic Auth 和 Bearer Token 有什么区别?什么场景用哪个?

Basic Auth(HTTP 基本认证):客户端发送 Authorization: Basic <base64(user:pass)> 头。 用户名密码用 Base64 编码(非加密),必须配合 HTTPS 使用。 适合内部系统、简单 API、设备认证等场景。优点是协议简单通用,缺点是凭证每次都传输、 无法细粒度授权、密码泄露即获得全部权限。
Bearer Token(持有者令牌):客户端发送 Authorization: Bearer <token> 头。Token 由服务端签发, 通常为 JWT(含签名、过期时间、自定义声明)。适合现代 RESTful API、OAuth2 授权、 单点登录(SSO)等场景。优点是 Token 可携带权限声明、可独立吊销、可设置短时效, 缺点是需要 Token 签发与管理基础设施。
选型建议:新项目优先用 Bearer Token(JWT), 老系统集成或简单内部 API 可用 Basic Auth,第三方开放 API 多用 API Key(自定义 Header)。

API Key 注入到 Header 还是 Query 参数?有什么区别?

Header 注入(如 X-API-Key: abc123):
- 不会出现在 URL 中,不会被日志、Referer、浏览器历史记录泄露
- 不会进入 CDN / 反向代理访问日志
- 支持 HTTP/2 头部压缩,性能略优
- 推荐 99% 的场景使用
Query 参数注入(如 ?api_key=abc123):
- URL 中明文携带密钥,会泄露到访问日志、Referer、浏览器历史
- 易于测试(直接浏览器访问)
- 适合 GET 请求的简单测试场景或客户端无法自定义 Header 的场景(如 <img> 标签)
- 生产环境应避免,必要时配合短时效签名 URL
本工具支持两种方式,在「认证」选择 API Key 后可切换 Header / Query。

JSON 请求体和 Form 请求体有什么区别?什么时候用哪个?

JSON 请求体Content-Type: application/json):
- 结构化数据,支持嵌套对象与数组
- RESTful API 主流格式,现代前后端分离项目首选
- 字符编码 UTF-8,支持中文与 Emoji
- 浏览器需手动 JSON.stringify,服务端需 JSON.parse
Form 请求体
- application/x-www-form-urlencoded:传统 HTML 表单提交,键值对用 & 连接、 = 分隔,值会 URL 编码。适合简单键值对(如登录表单)。
- multipart/form-data:每个字段一段,支持二进制数据(文件上传)。 适合文件上传场景。浏览器用 FormData 对象构造。
选型建议
- 文件上传:必须用 multipart/form-data
- 简单表单(无嵌套):可用 x-www-form-urlencoded,但 JSON 也行
- 复杂结构数据:优先 application/json
- 老系统兼容:根据服务端能力选择

生成的代码会自动加上 Content-Type 头吗?

会,但仅在用户未显式指定 Content-Type 时自动注入
- JSON 请求体:自动加 Content-Type: application/json
- x-www-form-urlencoded 请求体:自动加 Content-Type: application/x-www-form-urlencoded
- multipart/form-data 请求体:不自动加,由客户端库(如浏览器 FormData、Python requests) 自动设置带 boundary 的完整 Content-Type。cURL 用 -F 也会自动处理。
- Raw 请求体:不自动加,由用户根据实际格式自行指定(如 XML、HTML、自定义 MIME)
- 无请求体(GET / HEAD):不加 Content-Type
注意:若用户在 Headers 编辑器中已添加 Content-Type(不论大小写), 生成器不会覆盖用户值,便于自定义 charset(如 application/json; charset=utf-8)。

fetch 没有原生 timeout 选项,代码是怎么实现超时的?

fetch API 设计上不直接支持 timeout 选项(设计哲学是 AbortController 显式控制)。 本工具生成的代码使用 AbortSignal.timeout(ms) 实现超时:
signal: AbortSignal.timeout(30000)
该 API 在 Chrome 103+ / Firefox 100+ / Safari 16.4+ 进入 Baseline, 生产可用。超时后会抛出 TimeoutError(DOMException 子类), 可在 try/catch 中识别。
兼容旧浏览器的写法:手动构造 AbortController + setTimeout:
const ctrl = new AbortController(); setTimeout(() => ctrl.abort(), 30000); fetch(url, { signal: ctrl.signal });
其他语言:axios 原生支持 timeout 选项(毫秒); Python requests 的 timeout 单位是秒(已自动转换); Go 用 http.Client.Timeout(time.Duration);cURL 用 --max-time(秒)。

关闭 SSL 证书校验安全吗?什么场景需要?

不安全,仅在受控的测试或开发环境使用,生产环境必须开启
关闭 SSL 校验(即不验证服务端证书合法性)会导致:
- 中间人攻击(MITM):攻击者可冒充服务端截获通信
- 证书过期/吊销/域名不匹配不报错,掩盖安全问题
- 自签名证书的内部服务可正常访问,但丧失身份校验
合理使用场景
- 本地开发:自签名证书的内部 API(如 https://localhost:8443
- 测试环境:临时证书或内网服务
- 调试:排查证书链问题
各语言实现
- cURL:-k--insecure
- fetch:浏览器无法关闭证书校验(安全策略),仅 Node.js 18+ 通过环境变量 NODE_TLS_REJECT_UNAUTHORIZED=0
- axios(Node.js):通过 httpsAgent: new https.Agent({ rejectUnauthorized: false })
- Python requests:verify=False(会打印 InsecureRequestWarning,已自动禁用警告)
- Go:http.Transport.TLSClientConfig: &tls.Config{InsecureSkipVerify: true}

这个工具会上传我的请求配置吗?生成的代码安全吗?

完全本地处理,零上传
- 你输入的 URL、方法、Headers、认证凭证、请求体仅在浏览器内存中处理, 不发送到任何服务器。
- 生成的代码仅在你本地浏览器中显示,点击复制按钮才会写入剪贴板。
- 无 Cookie 追踪、无第三方统计、无广告。
- 适合处理含 AuthorizationCookieAPI Key 等敏感凭证的请求配置。
注意:本工具仅生成代码不发起请求——生成的 cURL 命令需你复制到终端执行, 生成的 fetch / axios / Python / Go 代码需你复制到项目运行。本工具不会主动调用你输入的 URL, 不会触发任何真实网络请求。
提醒:分享或粘贴生成的代码到外部环境时,请确认已脱敏(如把真实 Token 替换为占位符)。