refactor(jsmod): simplify discover API to consumer-only v1.3.4

This commit is contained in:
AI Engineer 2026-05-31 11:09:58 +08:00
parent 5051f455d6
commit fd02f32ba1
2 changed files with 6 additions and 46 deletions

View File

@ -1,12 +1,10 @@
# CHANGELOG
## v1.3.4 (2026-05-31)
- **重构**: 精简 JS API 导出。移除所有管理类 API`setNode`, `setLoadBalancer` 等)及 Header 常量。
- **定位**: JS 侧仅作为微服务能力的消费者,不参与服务发现的元数据维护。
## v1.3.3 (2026-05-31)
- **新增**: 深度集成 `jsmod`
- 提供 `get`, `post`, `put`, `delete`, `head`, `do`, `open` 等微服务调用能力。
- 提供 `from(r)` 支持微服务间的链路透传 (Context Propagation)。
- 导出微服务相关的 `header` 常量。
- **安全增强**: 封装 `jsResult` 以屏蔽敏感的 `Save()` 方法,确保微服务响应处理符合沙箱规范。
- **管控**: 定义 `setNode`, `setLoadBalancer`, `setRoute`, `addExternalApp``unsafe` 方法。
## v1.0.10 (2026-05-09)
- **API Redesign (Elegant API)**:

View File

@ -9,7 +9,7 @@ import (
func init() {
jsmod.Register("discover", map[string]any{
// RPC 调用 (默认实例)
// RPC 调用 (消费默认实例)
"get": func(app, path string, headers ...string) *jsResult {
return wrapResult(Get(app, path, headers...))
},
@ -22,41 +22,12 @@ func init() {
"delete": func(app, path string, data any, headers ...string) *jsResult {
return wrapResult(DefaultDiscoverer.Delete(app, path, data, headers...))
},
"head": func(app, path string, headers ...string) *jsResult {
return wrapResult(DefaultDiscoverer.Head(app, path, headers...))
},
"do": func(method, app, path string, data any, headers ...string) *jsResult {
return wrapResult(DefaultDiscoverer.Do(method, app, path, data, headers...))
},
"open": func(app, path string, headers ...string) any {
return DefaultDiscoverer.Open(app, path, headers...)
},
// 链路透传
"from": func(r *http.Request) *jsCaller {
return &jsCaller{c: DefaultDiscoverer.From(r)}
},
// 状态获取
"getAppNodes": func(app string) map[string]*NodeInfo {
return DefaultDiscoverer.GetAppNodes(app)
},
// Header 常量
"headerFromApp": HeaderFromApp,
"headerFromNode": HeaderFromNode,
"headerClientIP": HeaderClientIP,
"headerForwardedFor": HeaderForwardedFor,
"headerUserID": HeaderUserID,
"headerDeviceID": HeaderDeviceID,
"headerClientAppName": HeaderClientAppName,
"headerClientAppVersion": HeaderClientAppVersion,
"headerSessionID": HeaderSessionID,
"headerRequestID": HeaderRequestID,
"headerHost": HeaderHost,
"headerScheme": HeaderScheme,
"headerUserAgent": HeaderUserAgent,
}, "setNode", "setLoadBalancer", "setRoute", "addExternalApp")
})
}
// jsResult 包装 *gohttp.Result 以隐藏 Save() 等危险方法
@ -106,12 +77,3 @@ func (jc *jsCaller) Put(app, path string, data any, headers ...string) *jsResult
func (jc *jsCaller) Delete(app, path string, data any, headers ...string) *jsResult {
return wrapResult(jc.c.Delete(app, path, data, headers...))
}
func (jc *jsCaller) Head(app, path string, headers ...string) *jsResult {
return wrapResult(jc.c.Head(app, path, headers...))
}
func (jc *jsCaller) Do(method, app, path string, data any, headers ...string) *jsResult {
return wrapResult(jc.c.Do(method, app, path, data, headers...))
}
func (jc *jsCaller) Open(app, path string, headers ...string) any {
return jc.c.Open(app, path, headers...)
}