webz

package module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 18, 2023 License: MIT Imports: 13 Imported by: 0

README

webz

golang web 框架

Documentation

Overview

server是一个代表服务器的抽象,主要提供注册路由的接口,还有http包到web框架的桥梁

Index

Constants

View Source
const BodyBytesKey = "_webz/bodybyteskey"

Variables

This section is empty.

Functions

This section is empty.

Types

type Context

type Context struct {
	Req  *http.Request
	Resp http.ResponseWriter

	FullPath string //完整处理器路径

	Keys map[string]any //key/value结构存储一些数据

	PathParams  map[string]string //这个是解决:id路径参数问题//获取是在查询路由时获取//现在我还没有获取
	MathedRoute string            //拿取命中路由
	//下边这俩是为了设置返回值的//为什么不用resp这个,主要是因为会绕开RespData和Resptatuscode这两个//所以下边这俩主要是middleware读写用的
	RespStatusCode int
	RespData       []byte
	// contains filtered or unexported fields
}

Context 代表上下文的抽象 没有用自带的http包里边的Context主要是想实现更多东西

func (*Context) BindJSON added in v1.1.1

func (c *Context) BindJSON(val interface{}) error

BindJSON 读取数据正常读取Request Body 只能读取一次 读取解析body里边的值放入val中

func (*Context) BindJSONOpt added in v1.1.1

func (c *Context) BindJSONOpt(val interface{}, useNumber, disallowUnknown bool) error

BindJSONOpt 控制是否选择 UseNumber DisallowUnknown UseNumber 这个选项用于将所有数字类型转换为 Number 类型。 disallowUnknown 这个选项用于禁止未知属性。

func (*Context) FormValue added in v1.1.1

func (c *Context) FormValue(key string) (string, error)

FormValue 处理表单数据Form

func (*Context) JSON added in v0.2.0

func (c *Context) JSON(code int, val any) error

JSON 处理输出 将输入的数据转换一下然后提交给http

func (*Context) JSONOK added in v1.1.1

func (c *Context) JSONOK(val any) error

func (*Context) MuchBindJSON added in v1.1.1

func (c *Context) MuchBindJSON(val interface{}) (err error)

MuchBindJSON 多次读取数据

func (*Context) Next

func (c *Context) Next()

Next控制流程

func (*Context) PathValue added in v1.1.1

func (c *Context) PathValue(key string) (string, error)

func (*Context) QueryValue added in v1.1.1

func (c *Context) QueryValue(key string) (string, error)

QueryValue 查询参数带问号

func (*Context) Render added in v1.1.1

func (c *Context) Render(tplName string, data any) error

func (*Context) SetCookie added in v1.1.1

func (c *Context) SetCookie(ck *http.Cookie)

SetCookie 发送cookie

type FileDownloader added in v1.1.1

type FileDownloader struct {
	Dir string
}

func (FileDownloader) Handle added in v1.1.1

func (d FileDownloader) Handle() HandleFunc

type FileUploader added in v1.1.1

type FileUploader struct {
	FileField   string
	DstPathFunc func(*multipart.FileHeader) string
}

func (FileUploader) Handle added in v1.1.1

func (f FileUploader) Handle() HandleFunc

type GoTemplateEngine added in v1.1.1

type GoTemplateEngine struct {
	T *template.Template
}

func (*GoTemplateEngine) ParseGlob added in v1.1.1

func (g *GoTemplateEngine) ParseGlob(pattern string) error

func (*GoTemplateEngine) Render added in v1.1.1

func (g *GoTemplateEngine) Render(ctx context.Context, tplName string, data any) ([]byte, error)

type HTTPServer

type HTTPServer struct {
	//RouterGroup 用来实现路由的分组
	//刚开始是初始化记录的是"/"
	RouterGroup
	// contains filtered or unexported fields
}

HTTPServer对服务器进行抽象 实现Server里边的方法 这个属性小写是因为我只想通过NewHttpServer进行创建路由,不打算把这个暴露在外边

func NewHTTPServer

func NewHTTPServer() *HTTPServer

NewHttpServer 进行初始化创建路由

func (*HTTPServer) ServeHTTP

func (h *HTTPServer) ServeHTTP(writer http.ResponseWriter, Request *http.Request)

用来实现context构建,路由匹配,业务逻辑 不是路由构建

func (*HTTPServer) Start

func (h *HTTPServer) Start(add string) error

Start是用来监听端口的 主要是模仿http.ListenAndServe这个监听端口来封装从而实现更多东西

type HTTPServerOption added in v1.1.1

type HTTPServerOption func(server *HTTPServer)

func ServerWithTemplateEngine added in v1.1.1

func ServerWithTemplateEngine(tplEngine TemplateEngine) HTTPServerOption

type HandleFunc

type HandleFunc func(ctx *Context)

HandleFunc 处理器函数

type HandlesChain

type HandlesChain []HandleFunc

HandlesChain 处理器函数结合

type RouterGroup

type RouterGroup struct {

	//Handles 当前组处理器
	Handles HandlesChain
	// contains filtered or unexported fields
}

func (*RouterGroup) GET

func (group *RouterGroup) GET(path string, handles ...HandleFunc)

GET 允许传入多个处理器,具体实现稍后再说

func (*RouterGroup) Group

func (group *RouterGroup) Group(relativePath string, handles ...HandleFunc) *RouterGroup

func (*RouterGroup) Use

func (group *RouterGroup) Use(middleware ...HandleFunc) *HTTPServer

type StaticResourceHandler added in v1.1.1

type StaticResourceHandler struct {
	// contains filtered or unexported fields
}

func (*StaticResourceHandler) Handle added in v1.1.1

func (s *StaticResourceHandler) Handle(ctx *Context)

type TemplateEngine added in v1.1.1

type TemplateEngine interface {
	Render(ctx context.Context, tplName string, data any) ([]byte, error) //tplName 渲染引擎 data 渲染页面用的数据
}

Directories

Path Synopsis
middleware
log

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL