network/httpclient/implement/response_parser.go

38 lines
1.2 KiB
Go

// Package implement ...
//
// Description : implement ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-05-07 14:53
package implement
import (
"git.zhangdeman.cn/zhangdeman/network/httpclient/abstract"
"git.zhangdeman.cn/zhangdeman/serialize"
)
// ResponseParserTable 响应数据解析器
// 此处为内置解析实现, 未加锁, 未做并发安全处理
// 原因: 无论 Add 还是 Delete, 均应在服务初始化阶段调用, 而在服务完成初始化, 完全启动之后, 应该只有读操作
// 如果强要运行时, 动态操作此配置表, 需在外部调用处自行加锁
// 也可完全自行实现相关解析实例, 在请求时通过 RequestOption 传入, 则控制权完全贵开发者所有
var ResponseParserTable = map[string]abstract.IResponseParser{
"json": serialize.JSON,
"xml": serialize.Xml,
"yml": serialize.Yml,
"toml": serialize.Toml,
"yaml": serialize.Yml,
"text": serialize.JSON,
}
// AddResponseParser 新增一个解析实现
func AddResponseParser(t string, parser abstract.IResponseParser) {
ResponseParserTable[t] = parser
}
// RemoveResponseParser 移除一个解析实现
func RemoveResponseParser(t string) {
delete(ResponseParserTable, t)
}