【发布时间】:2017-01-19 04:01:15
【问题描述】:
我用 golang 开发了一些服务器。我尝试创建一些包装函数,这可以在将来帮助我。
我有什么:
1) 我有一些 DTO 结构,例如:
type Request struct {
Field1 string `json:"field1"`
Field2 string `json:"field2"`
}
type Response struct {
Field1 string `json:"field1"`
Field2 string `json:"field2"`
Field3 string `json:"field3"`
}
2) 我在控制器层有一些函数,它们(按照约定)接收 1 个参数(指向结构的指针)并返回 1 个结果(指向结构的指针),例如:
func SomeHandler(request *Request) *Response{
...do something
return &Response{"first","second","third"}
}
我需要什么:
我需要编写作为参数接收的包装函数:
- 指向“控制器”函数的指针
- http.ResponseWriter
- *http.Request
这个包装函数必须:
- 确定“控制器”函数的参数类型
- 确定“控制器”函数的结果类型
- 从 *http.Request 的正文中实例化并填充参数值(从 json 解码)
- 使用上一步参数实例化的调用控制器函数
- 将上一步的结果写入http.ResponseWriter(编码为json)
包装器必须与任何类型的“控制器”函数一起正常工作 - 此函数的签名不同(不同的参数类型,不同的结果类型)
谁能帮我实现这个包装器?
【问题讨论】:
标签: go reflection