From e9a6d5b42a359362da971157826b0dbfba720c58 Mon Sep 17 00:00:00 2001 From: AI Engineer Date: Sun, 21 Jun 2026 14:04:47 +0800 Subject: [PATCH] =?UTF-8?q?chore(gateway):=20=E5=AF=B9=E9=BD=90=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=89=88=E6=9C=AC=E5=B9=B6=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3=EF=BC=88by=20AI=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 19 +++++++++++++++ app_test.go | 5 ++-- go.mod | 34 +++++++++++++------------- go.sum | 68 ++++++++++++++++++++++++++-------------------------- 4 files changed, 73 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4780000..5a775d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## v1.5.3 (2026-06-21) +- **测试修复**: + - 在测试中通过 `SERVICE_IP=127.0.0.1` 环境变量绕过 VPN 虚拟网卡导致的连接超时。 + - 修正测试中的代理匹配路径断言,确保兼容查询参数传递。 +- **依赖对齐**: + - 升级依赖 `jsmod` 至 `v1.5.3`, `timer` (`v1.5.0`), `cast` 至 `v1.5.3`, `rand` 至 `v1.5.3`, `encoding` 至 `v1.5.4`, `shell` 至 `v1.5.3`, `safe` 至 `v1.5.2`, `id` 至 `v1.5.4`, `crypto` 至 `v1.5.3`, `file` 至 `v1.5.5`, `config` 至 `v1.5.3`, `watch` 至 `v1.5.2`, `log` 至 `v1.5.8`, `http` 至 `v1.5.3`, `redis` 至 `v1.5.6`, `starter` 至 `v1.5.5`, `discover` 至 `v1.5.3`, `service` 至 `v1.5.15`。 + +## v1.5.2 (2026-06-12) +- **依赖对齐**: + - 对齐全局服务和基础设施到最新版本。 + +## v1.5.1 (2026-06-08) +- **优化**: + - 对齐 starter v1.5.3 与 service v1.5.12。 + +## v1.5.0 (2026-06-03) +- **依赖对齐**: + - 对齐 Tag v1.5.0。 + ## [v2.0.0] - 2026-05-12 ### ✨ 全新重构架构 (Architecture Rewrite) diff --git a/app_test.go b/app_test.go index 4fb6e93..1e08ef2 100644 --- a/app_test.go +++ b/app_test.go @@ -15,6 +15,7 @@ import ( ) func TestGateway(t *testing.T) { + t.Setenv("SERVICE_IP", "127.0.0.1") // 1. 设置服务发现和 Redis 依赖 registry := "127.0.0.1:6379" rd := redis.GetRedis(registry, log.DefaultLogger) @@ -134,7 +135,7 @@ func TestGateway(t *testing.T) { res.Body.Close() body = string(b) } - if err != nil || body != "hello from backend, path: /hello" { + if err != nil || body != "hello from backend, path: /hello?a=1" { t.Fatalf("Proxy /api/ failed, got: %s", body) } @@ -150,7 +151,7 @@ func TestGateway(t *testing.T) { res.Body.Close() body = string(b) } - if err != nil || body != "hello from backend, path: /hello/world" { + if err != nil || body != "hello from backend, path: /hello/world?x=2" { t.Fatalf("Proxy /v2/* failed, got: %s", body) } diff --git a/go.mod b/go.mod index 7b4b318..a12711d 100644 --- a/go.mod +++ b/go.mod @@ -3,28 +3,28 @@ module apigo.cc/go/gateway go 1.25.0 require ( - apigo.cc/go/cast v1.5.2 - apigo.cc/go/config v1.5.2 - apigo.cc/go/log v1.5.6 - apigo.cc/go/redis v1.5.4 - apigo.cc/go/service v1.5.14 - apigo.cc/go/starter v1.5.4 + apigo.cc/go/cast v1.5.3 + apigo.cc/go/config v1.5.3 + apigo.cc/go/log v1.5.8 + apigo.cc/go/redis v1.5.6 + apigo.cc/go/service v1.5.15 + apigo.cc/go/starter v1.5.5 ) -require apigo.cc/go/jsmod v1.5.2 // indirect +require apigo.cc/go/jsmod v1.5.3 // indirect require ( - apigo.cc/go/crypto v1.5.2 // indirect - apigo.cc/go/discover v1.5.2 // indirect - apigo.cc/go/encoding v1.5.3 // indirect - apigo.cc/go/file v1.5.4 // indirect - apigo.cc/go/http v1.5.2 // indirect - apigo.cc/go/id v1.5.3 // indirect - apigo.cc/go/rand v1.5.2 // indirect - apigo.cc/go/safe v1.5.1 // indirect - apigo.cc/go/shell v1.5.2 // indirect + apigo.cc/go/crypto v1.5.3 // indirect + apigo.cc/go/discover v1.5.3 // indirect + apigo.cc/go/encoding v1.5.4 // indirect + apigo.cc/go/file v1.5.5 // indirect + apigo.cc/go/http v1.5.3 // indirect + apigo.cc/go/id v1.5.4 // indirect + apigo.cc/go/rand v1.5.3 // indirect + apigo.cc/go/safe v1.5.2 // indirect + apigo.cc/go/shell v1.5.3 // indirect apigo.cc/go/timer v1.5.0 // indirect - apigo.cc/go/watch v1.5.1 // indirect + apigo.cc/go/watch v1.5.2 // indirect github.com/fsnotify/fsnotify v1.10.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gomodule/redigo v2.0.0+incompatible // indirect diff --git a/go.sum b/go.sum index 95f87f3..53c0732 100644 --- a/go.sum +++ b/go.sum @@ -1,39 +1,39 @@ -apigo.cc/go/cast v1.5.0 h1:UBGJtFQ8eJPMQXs37cUgqd7YQo1zI9opuSDBDmn2/pE= -apigo.cc/go/cast v1.5.0/go.mod h1:z2GW5p5WCZGEqVVIJUdhl232vRbLf2Qu4EDlEakX/D8= -apigo.cc/go/config v1.5.1 h1:rpj7oCzlsDV3f2/YK3Pb+CHbfr2DL5Vyyv6VNkobJP4= -apigo.cc/go/config v1.5.1/go.mod h1:jdMiDLPa9gzB8/FFZvm9jOopUqdxb7XSX+0OeWcZZUM= -apigo.cc/go/crypto v1.5.0 h1:Nxz7a6VKCdvaF258IU0NkjQyureOLxfR308Sy2iftUI= -apigo.cc/go/crypto v1.5.0/go.mod h1:F9M6nXv+5328r1ZwbTvI6fcr8VdgqHVzALOcsdv6ntE= -apigo.cc/go/discover v1.5.0 h1:RGHulidyAHCZdGfpFytFUl3ur4aNVMXKlfJbAMCvgpo= -apigo.cc/go/discover v1.5.0/go.mod h1:nA5DQlmhzjGBZVqpEbZRNDIKNU+Sr9trxbKAgDxjZ+I= -apigo.cc/go/encoding v1.5.0 h1:EJNdRVDOMoI2DAvZwQNQTbYuqB/6zsEzvg7lS5pQI+I= -apigo.cc/go/encoding v1.5.0/go.mod h1:8++NfZj3hWig0qh2g7GQRw/4LpSvCYMWUZ+8J+x58cA= -apigo.cc/go/file v1.5.0 h1:Fh1NSDBqaxjuXYJ71yPHPXVJ8BFEv/AGS3l+jkLi5uw= -apigo.cc/go/file v1.5.0/go.mod h1:4YhOGgBINTpmmmgws3H8LAyXQQBGzBp44hYUoCS+kr0= -apigo.cc/go/http v1.5.0 h1:GGIu0dhMjTiYygxH9NWOzz6AY+WZjfyTL1qZ8G9vI1U= -apigo.cc/go/http v1.5.0/go.mod h1:CIIH7HS6wdicLpSgkEVozdDcHlM9W9ygmmzJvzhAKWg= -apigo.cc/go/id v1.5.0 h1:MjNWPhBhDsoXaLeJDv/0wfJmVMU9EvOs8pWYfsTQ6e8= -apigo.cc/go/id v1.5.0/go.mod h1:qhu4a1/KLc/XcBpcsRu+mXZt7U7Wvd9zMcPs4VspuPA= -apigo.cc/go/jsmod v1.5.0 h1:JgQtJNiJWy1NOP9AzE8NX5VXJkpO/x3GqLsCCSny5Ec= -apigo.cc/go/jsmod v1.5.0/go.mod h1:bmyeZtOAP/j5am+YRnaiM89smysK24K7ebk0koFtsSw= -apigo.cc/go/log v1.5.5 h1:AFU7d7AQxkpgDHl7SnlEwd6yzGSFAlnrrjbrNDQnQHI= -apigo.cc/go/log v1.5.5/go.mod h1:Djy+I5aLhGB/EjwRz4KHqkVEz584IAD55FAFiIfInuo= -apigo.cc/go/rand v1.5.0 h1:1o8hh8fhdBuk1/h02IvugvamuT3dkWbVJrqEJVQKB2E= -apigo.cc/go/rand v1.5.0/go.mod h1:Lh98S2dm9UY0X+M+kNQQEKyXHG5pcCKSFPyXN0QCGdk= -apigo.cc/go/redis v1.5.0 h1:VXNDqzKj87BchF7ubDEH+T6lp8NrjeK0izU4ooo7u1A= -apigo.cc/go/redis v1.5.0/go.mod h1:/olsrHndkUNezUX1KbBBt8b4Got7SX7E8EJzcb1PknM= -apigo.cc/go/safe v1.5.0 h1:W1NblmcU8cex1f9Y5z8mNLUJOzZTE1s6fszb3FbhGnk= -apigo.cc/go/safe v1.5.0/go.mod h1:OfQ5d6COePSGEuPvMeOk6KagX2sezw7nvKh7exj9SeM= -apigo.cc/go/service v1.5.11 h1:KU0Jj5Uo3hwdH1b6Wn9Vru61XvEqZaxPHzzZgYkThAc= -apigo.cc/go/service v1.5.11/go.mod h1:MH3SjHtOLlKN/fTpA8NOjJXrB+BCdQRBnO9JNj9fir8= -apigo.cc/go/shell v1.5.0 h1:WLDMMqUU0INeaBDmQsTPr0h/NfB2RknAtiJ5NL467+Q= -apigo.cc/go/shell v1.5.0/go.mod h1:rYHA77d5hEsQHcJrbAWf1pHy0sxayeJ0gU55LA/JWQk= -apigo.cc/go/starter v1.5.2 h1:bSNByK9uU+4+Rw8a83TNhQnUUjCPfJj7DVUpEuCD2wg= -apigo.cc/go/starter v1.5.2/go.mod h1:iu3AnpqpriJBiTJC0MJyeFxGmmFto+SU+S2d96XhRco= +apigo.cc/go/cast v1.5.3 h1:jk6VX0rGFhjKtfPhsaV6IKYpiGmORRk9qPTtuNS53tw= +apigo.cc/go/cast v1.5.3/go.mod h1:GMjjrYn93tWat1U409G7h1jR3ejfLLI7r0efBo9Sbd4= +apigo.cc/go/config v1.5.3 h1:peq1FM2xO+vzPHJf8Dwg3DXm8PtFQMfTFKQj6fpoG7A= +apigo.cc/go/config v1.5.3/go.mod h1:ZiOAjWa1mQIzszaJZN+kO6YU4GXreng+NxkcK/TAkqQ= +apigo.cc/go/crypto v1.5.3 h1:2JUHC2cgR2zrnn36EzwkUAdxmmTXAA/8yTNo+2X1mPE= +apigo.cc/go/crypto v1.5.3/go.mod h1:PheYKHEXmoEFI1AK5PpY1borQWcRlkkSaWncT3cWbhE= +apigo.cc/go/discover v1.5.3 h1:WW1A7qReYytebETDb5MhVRPmT10KReGM4QbPTfqS/iw= +apigo.cc/go/discover v1.5.3/go.mod h1:rylFiGvfNro090rGtlc9K31KATn6WZbnn1Fk2AbQZEU= +apigo.cc/go/encoding v1.5.4 h1:Fk8TrveZATyy8SHukC4ZiqdTSp+QIfsRHtt55xmMK7w= +apigo.cc/go/encoding v1.5.4/go.mod h1:dShEsZ3gKqBINz7TSOYf4e7/fBCqCY9VzlenoGUQUFM= +apigo.cc/go/file v1.5.5 h1:/+HmDumLu6Qk2KuQL63M9lpgzHTDL+QJ8dStOl7e9gs= +apigo.cc/go/file v1.5.5/go.mod h1:xRVNhctvqOKeBemmcRW/BQfgkc3B+vT/UZVdSc7duUo= +apigo.cc/go/http v1.5.3 h1:nvJh9bqPPcPRv6p8WEw7bJAd0UC+r2zvQA8/QioVLTQ= +apigo.cc/go/http v1.5.3/go.mod h1:cFrPK61y9f1PrsNSJscZT/QVOgkT15o9OP7O8cuMb8Q= +apigo.cc/go/id v1.5.4 h1:D1Zx9gEZhOgdTgZ4SdmPImhpc9xGiOA33Y+j2MkstzQ= +apigo.cc/go/id v1.5.4/go.mod h1:hCTQq+KC1ALWe1FpPERf+W4B6FSulg9FAgOUJDDySiY= +apigo.cc/go/jsmod v1.5.3 h1:S3W317bH0QV2NMeRO1E0v6ySIBOfMWYv/NuQJbvqKWU= +apigo.cc/go/jsmod v1.5.3/go.mod h1:bmyeZtOAP/j5am+YRnaiM89smysK24K7ebk0koFtsSw= +apigo.cc/go/log v1.5.8 h1:/IYtGPWhRjT3OayylDIphkWZIQbpLjqVeSnFEiD3Dy0= +apigo.cc/go/log v1.5.8/go.mod h1:HfFPANMYxJx197SSTXB21Pgxcz/gGqPP8nlSErgd5WE= +apigo.cc/go/rand v1.5.3 h1:O4bPIwyaOWEBCr0nL9A4G4qG48AqiGTCzfPeckm3Ius= +apigo.cc/go/rand v1.5.3/go.mod h1:q1BTFkY/cXE229dDD5Q22lF7T0DoKPV6xAu+6bCrDH4= +apigo.cc/go/redis v1.5.6 h1:Lzo8M2binfqdQdVVp31Z/Max4qT8D82QdZjLlLQsrIY= +apigo.cc/go/redis v1.5.6/go.mod h1:HmqSh2Ll7/b2zFXDi2Ap13YOuMCVniuZNbwtxkbIYII= +apigo.cc/go/safe v1.5.2 h1:EnuEOW/SGwf/5A0nw9LnqfKJE071+TIc6ez8HI9R9Lg= +apigo.cc/go/safe v1.5.2/go.mod h1:2GqCCLLGex4OAhdET3iBWm1R+LIYtmTrvHP8W0iESSw= +apigo.cc/go/service v1.5.15 h1:MmmLKJSOjXtZHlEWoCNsuIguPLpe36/cWugqvHPRiSw= +apigo.cc/go/service v1.5.15/go.mod h1:HUyz+w77n5kBNB8uJVJo10nxCFewLDmgRuVIy/benHc= +apigo.cc/go/shell v1.5.3 h1:pI+u12sy6upoygq+1XXqUlvUboBfH4Q52jRpoJFv56A= +apigo.cc/go/shell v1.5.3/go.mod h1:FdZWUrcXHGJXo725oSyHqAeFoX0E9yY3PDhrz9hujgY= +apigo.cc/go/starter v1.5.5 h1:4ST02o4qP8IIekxtd9Jhx5RHTrSGXtVQUguSIXV0iWc= +apigo.cc/go/starter v1.5.5/go.mod h1:WAGhdtmZdpP1Jn/z0pCqHwpTbqqaFhm5OqH7QVtcanY= apigo.cc/go/timer v1.5.0 h1:iPo/IQn+iuhBRI1/MR1txwZnamef/RBBfOiIlBiqkgk= apigo.cc/go/timer v1.5.0/go.mod h1:kOnqTTX+zA4AH7SfC+LpUm4ZvS+DVyWWMqul/V5QWJs= -apigo.cc/go/watch v1.5.0 h1:hdnnr7DkiY/HyQGwOIl3A4wV2pfaS7h61fODq06XTu8= -apigo.cc/go/watch v1.5.0/go.mod h1:/Hbhoxiq295FnIqPzieUJ7EGtibWyLQrvV4Cj/vjNXE= +apigo.cc/go/watch v1.5.2 h1:zG56PD8Vml5gVJeo2yNuX9s6stOaIJRYqqKGqXK+xTU= +apigo.cc/go/watch v1.5.2/go.mod h1:MW1XnI0MVyUZpRy590no1vrDT+U4y20L0UZW9/LgU+k= github.com/fsnotify/fsnotify v1.10.1 h1:b0/UzAf9yR5rhf3RPm9gf3ehBPpf0oZKIjtpKrx59Ho= github.com/fsnotify/fsnotify v1.10.1/go.mod h1:TLheqan6HD6GBK6PrDWyDPBaEV8LspOxvPSjC+bVfgo= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=