代码拉取完成,页面将自动刷新
package httpserver
import (
"context"
"encoding/json"
"github.com/julienschmidt/httprouter"
"mime/multipart"
"net/http"
"net/url"
)
type Ctx struct {
httpContext context.Context
writer http.ResponseWriter
request *http.Request
routerParams httprouter.Params
IHttpResponse
}
func NewCtx(writer http.ResponseWriter, request *http.Request) *Ctx {
resp := NewHttpResponse(writer)
ctx := &Ctx{
httpContext: request.Context(),
writer: writer,
request: request,
IHttpResponse: resp,
}
return ctx
}
func (ctx *Ctx) _setRouterParams(params httprouter.Params) {
ctx.routerParams = params
}
func (ctx *Ctx) Context() context.Context {
return ctx.httpContext
}
func (ctx *Ctx) WithValue(key, val interface{}) {
ctx.httpContext = context.WithValue(ctx.httpContext, key, val)
}
func (ctx *Ctx) Form() url.Values {
r := ctx.request
form := url.Values{}
r.ParseForm()
form = r.Form
return form
}
func (ctx *Ctx) FormJson(stc interface{}) error {
r := ctx.request
contentType := r.Header.Get("Content-Type")
switch contentType {
case "application/json":
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&stc)
if err != nil {
return err
}
default:
}
return nil
}
func (ctx *Ctx) FormMultipart() (map[string][]string, map[string][]*multipart.FileHeader, error) {
r := ctx.request
err := r.ParseMultipartForm(128)
if err != nil {
return nil, nil, err
}
return r.MultipartForm.Value, r.MultipartForm.File, nil
}
func (ctx *Ctx) Value(key interface{}) interface{} {
return ctx.httpContext.Value(key)
}
func (ctx *Ctx) SetResponseHandler(response IHttpResponse) {
ctx.IHttpResponse = response
}
func (ctx *Ctx) Writer() http.ResponseWriter {
return ctx.writer
}
func (ctx *Ctx) Request() *http.Request {
return ctx.request
}
func (ctx *Ctx) Param(name string) string {
return ctx.routerParams.ByName(name)
}
func (ctx *Ctx) WriteHeader(code int) {
ctx.writer.WriteHeader(code)
}
func (ctx *Ctx) Header() http.Header {
return ctx.writer.Header()
}
func (ctx *Ctx) Write(resp []byte) (int, error) {
return ctx.writer.Write(resp)
}
func (ctx *Ctx) WriteStr(resp string) (int, error) {
return ctx.writer.Write([]byte(resp))
}
func (ctx *Ctx) Authorization() string {
return ctx.request.Header.Get("Authorization")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。