1 Star 0 Fork 0

Souki/go-framework

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
server_http_ctx.go 1.84 KB
一键复制 编辑 原始数据 按行查看 历史
王少奇 提交于 2021-08-06 17:33 +08:00 . 优化
package httpserver
import (
"context"
"encoding/json"
"github.com/julienschmidt/httprouter"
"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 {
ctx := &Ctx{
httpContext: request.Context(),
writer: writer,
request: request,
IHttpResponse: NewHttpResponse(writer),
}
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
contentType := r.Header.Get("Content-Type")
form := url.Values{}
switch contentType {
case "application/json":
var fm map[string]string
decoder := json.NewDecoder(r.Body)
decoder.Decode(&fm)
for k, v := range fm {
form.Add(k, v)
}
default:
r.ParseForm()
form = r.Form
}
return form
}
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))
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/scottq/go-framework.git
git@gitee.com:scottq/go-framework.git
scottq
go-framework
go-framework
v1.1.2

搜索帮助