- 六协议调试:HTTP/GraphQL/WebSocket/SSE/Socket.IO/MQTT
- 集合树/多标签/多环境变量/历史记录,localStorage 持久化
- 导入:OpenAPI 2/3/3.1、Postman、Apifox、Apipost、cURL、HAR、
Insomnia、Hoppscotch、Markdown(自动识别,21 个单测覆盖)
- 导出:OpenAPI 3.0 JSON/YAML、Postman v2.1、Markdown 文档、
全量备份;单请求生成 cURL/fetch/Python/Go 代码
- Gin 服务:HTTP 代理、NDJSON 流式代理(SSE 透传)、
WebSocket 隧道(浏览器自定义握手 Header)
- 内置产品官网 /home 与用户文档站 /docs(SSR,随二进制交付)
- lucide 图标体系 + 品牌标识(Logo/favicon),明暗双主题
- 环境变量:彩色徽标切换器、管理弹窗、{{ 自动补全
24 lines
502 B
Go
24 lines
502 B
Go
package proxy
|
|
|
|
import "testing"
|
|
|
|
func TestValidateURL(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
raw string
|
|
ok bool
|
|
}{
|
|
{"https://example.com/a", true},
|
|
{"file:///etc/passwd", false},
|
|
{"http://169.254.169.254/latest/meta-data", false},
|
|
{"http://metadata.google.internal/computeMetadata/v1", false},
|
|
} {
|
|
_, err := ValidateURL(tc.raw)
|
|
if tc.ok && err != nil {
|
|
t.Fatalf("%s: %v", tc.raw, err)
|
|
}
|
|
if !tc.ok && err == nil {
|
|
t.Fatalf("expected rejection: %s", tc.raw)
|
|
}
|
|
}
|
|
}
|