8.02 课后复习-Context
PART1. 对Body的输入进行JSON反序列化
package web
import (
"encoding/json"
"errors"
"net/http"
)
// Context HandleFunc的上下文
type Context struct {
// Req 请求
Req *http.Request
// Resp 响应
Resp http.ResponseWriter
// PathParams 路径参数名值对
PathParams map[string]string
}
// BindJSON 绑定请求体中的JSON数据到给定的目标对象上 这个目标对象可能是某个结构体的实例 也有可能是个map
func (c *Context) BindJSON(target any) error {
if target == nil {
return errors.New("web绑定错误: 给定的实例为空")
}
if c.Req.Body == nil {
return errors.New("web绑定错误: 请求体为空")
}
decoder := json.NewDecoder(c.Req.Body)
return decoder.Decode(target)
}PART2. 处理表单输入
PART3. 处理查询参数
3.1 基本实现
3.2 缓存查询参数
3.3 无法区分key不存在的情况与key对应的参数值是空字符串的情况
PART4. 处理路径参数
PART5. 返回不同数据类型的输入
5.1 定义ReqValue结构体
5.2 定义各种类型转换的方法
5.3 context的各个处理请求参数的方法中返回ReqValue
5.4 测试用例
Last updated