代码拉取完成,页面将自动刷新
//解释请求内容,放到相应的成员变量中
package ecgo
import (
"encoding/json"
"errors"
"net/http"
"net/url"
"strings"
)
// Request 请求对象
type Request struct {
RawData string
*http.Request
data map[string]string
parsed bool
}
// NewRequest 创建Request对象
func NewRequest(req *http.Request) *Request {
data := make(map[string]string)
body := make([]byte, req.ContentLength)
req.Body.Read(body)
return &Request{
string(body),
req,
data,
false,
}
}
func (req *Request) parse() {
if !req.parsed {
req.ParseForm()
contentType := strings.ToLower(req.Header.Get("Content-Type"))
if strings.HasPrefix(contentType, "multipart/form-data") {
req.ParseMultipartForm(10 << 20)
}
var vals url.Values
if req.MultipartForm != nil {
vals = req.MultipartForm.Value
} else {
vals = req.PostForm
}
for k, v := range vals {
if _, ok := req.data[k]; !ok {
req.data[k] = v[0]
}
}
for k, v := range req.Form {
if _, ok := req.data[k]; !ok {
req.data[k] = v[0]
}
}
req.parsed = true
}
}
// GetHeader 获取指定名称的请求头
func (req *Request) GetHeader(key string) string {
return req.Header.Get(key)
}
// Input 获取指定的请求参数内容,以字符串类型返回
// Input(key) 获取请求参数,未设置时返回空字符串
// Input(key, defaultVal) 获取请求参数,不存在时返回defaultVal
func (req *Request) Input(key string, defaultVal ...string) string {
req.parse()
val, exists := req.data[key]
if !exists {
if len(defaultVal) > 0 {
val = defaultVal[0]
} else {
val = ""
}
}
return val
}
// Inputs 返回指定的请求参数,返回map
// Inputs() 获取全部请求参数
// Inputs(key1, key2, ...) 返回指定的参数,不存在的参数值为空字符串
func (req *Request) Inputs(keys ...string) map[string]string {
req.parse()
result := make(map[string]string)
switch len(keys) {
case 0:
result = req.data
default:
for _, k := range keys {
if val, exists := req.data[k]; exists {
result[k] = val
} else {
result[k] = ""
}
}
}
return result
}
// ParseJson 将json字符串格式的原始数据decode到result
func (req *Request) ParseJson(result interface{}) error {
if !strings.HasPrefix(strings.ToLower(req.Header.Get("Content-Type")), "application/json") {
return errors.New("not application/json request")
}
return json.Unmarshal([]byte(req.RawData), result)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。