rider

package module
v1.2.5 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2021 License: MIT Imports: 33 Imported by: 13

README

rider

A lightweight http framework, custom infinite pole routing

下载

  • go get rider
1: 创建服务
app := rider.New()

2: 创建路由

app.GET("/path", func(c rider.Context) {
  c.Send(200, []byte("ok"))
})

3: 添加中间件

app.USE(func(c rider.Context){})
app.GET("/path", func(c rider.Context){}, func(c rider.Context){},...)
  • 只有Kid方法能引入子路由
app.Kid("/path", func(c rider.Context){}, func(c rider.Context){}, func(c rider.Context){}, *rider.Router{})

4: 路由

  • GET/POST/PUT/PATCH/DELETE/OPTIONS
  • ANY为任意请求方式的路由
  • 通过Kid方式注册子路由,支持无限子路由

5: 中间件

  • 全局的中间件注册

5: render模版

6: 设置静态文件

app := rider.New()
app.USE(func(c rider.Context){})
  • 路由级的中间件注册
app := rider.New()
app.GET("/path", func(c rider.Context), func(c rider.Context), ...)
  • 子路由的中间件注册
app := rider.New()
app.Kid("/path", func(c rider.Context), func(c rider.Context), func(c rider.Context), *rider.Router{})

7: 接口

	//获取Response响应体内容
	Response() *Response
	//获取请求体部分
	Request() *Request
	//获取app初始化时注册的logger服务,用于生成日志
	Logger() *logger.LogQueue
  • 见下文
	//###获取请求相关的数据,
	//给context传递变量,该变量在整个请求的传递中一直有效(中间件传递)
	SetLocals(key string, value interface{})

	//通过SetLocals设置的值可以在整个响应处理环节通过GetLocals获取
	GetLocals(key string) interface{}
  • Query
  • 注. Query只获取url里面的参数。
	//只获取请求url中的查询字符串querystring的map[]string值
	Query() url.Values

	//根据字段名直接查询querystring某个字段名对应的值
	QueryString(key string) string
  • Body(). 只获取请求体的内容,包括form格式个multipart格式,(不包含上传文件)
	//只获取请求体内的请求参数,
	Body() url.Values

	//根据字段名直接查询"请求体"某中个字段名对应的值
	BodyValue(key string) string
	//获取请求路由 /:id/:xx中值,路由参数
	Params() map[string]string

	//获取请求路由中某字段的值
	Param(key string) string
	//注册的请求路径中存在正则匹配规则,取得的参数和取正则sub参数一样(详见param例子)
	PathParams() []string //通过正则匹配后得到的路径上的一些参数
	//当请求头的content-type为multipart/form-data时,获取请求中key对应的文件信息(多个文件时,只会获取第一个)
	FormFile(key string) (*UploadFile, error)

	//当请求头的content-type为multipart/form-data时,获取请求中key对应的文件列表
	FormFiles(key string) ([]*UploadFile, error)

	//将file保存,fileName指定完整的路径和名称(先调用FormFile或者FormFiles将返回的file传入即可)
	StoreFormFile(file *UploadFile, fileName string) (int64, error)

	//先通过FormFiles获取文件列表,指定path目录,存储文件的文件夹。文件名将会用随机字符串加文件的后缀名(file.GetFileExt())
	StoreFormFiles(files []*UploadFile, path string) ([]string, error)
	//获取请求头信息
	Header() http.Header

	//根据key获取请求头某一字段的值
	HeaderValue(key string) string
	//获取请求头的完整url
	URL() string
	//获取请求头的path
	Path() string
	//获取响应头的HTTP方法
	Method() string
	//获取请求来源的IP地址
	ClientIP() string
	//获取分配的请求id
	RequestID() string
	//判断请求是否为ajax
	IsAjax() bool
	//获取请求的cookies
	Cookies() []*http.Cookie

	//获取请求体中某一字段的cookie值
	CookieValue(key string) (string, error)
	//##响应相关
	//获取响应的状态码
	Status() int
	//将http请求升级为hijack,hijack的信息保存在HijackUp中
	Hijack() (*HijackUp, error)
	//给客户端发送文件(可用户静态文件处理)
	SendFile(path string) error
	//下载,fileName为完整路径,name为下载时指定的下载名称,传""使用文件本身名称,typ指定attachment还是inline的方式下载,默认为attchment
	Download(fileName string, name string, typ string) error
	//获取完整的响应头信息
	WHeader() http.Header

	//获取响应头的某一字段值
	WHeaderValue(key string) string
	//设置cookie
	SetCookie(cookie http.Cookie)

	//根据cookie名删除cookie
	DeleteCookie(cookieName string)
	//获取系统默认注册的jwt服务("github.com/dgrijalva/jwt-go"),具体使用例子参考example/jwt
	Jwt() *riderJwter

	//注入jwt(使用前必须先注入服务)
	setJwt(jwter *riderJwter)
	//设置响应头
	SetHeader(key, value string)

	//给响应头添加值
	AddHeader(key, value string)
	//给响应头设置contenttype
	SetCType(contentType string)
	//重定向
	Redirect(code int, targetUrl string)
	//给客户端发送数据
	Send(code int, d []byte) (int, error)

	//给客户端发送json格式的数据
	SendJson(code int, i interface{}) (int, error)
	//负责模板渲染 ,只要实现了BaseRender,注册app服务是直接修改tplsRender的值
	Render(tplName string, data interface{})

8: 上下文变量

app := rider.New()
app.USE(
	func(c rider.Context) {
		c.SetLocals("locals", "this is the first locals")
		c.SetLocals("locals2", "this is the second locals")
		c.Next()
	},
)
app.Kid("/", router.Router())
app.Listen(":5003")
  • child.go
func Router() *rider.Router {
	router := rider.NewRouter()
	router.GET("/", func (c rider.Context) {
		fmt.Println(c.GetLocals("locals"))
		fmt.Println(c.GetLocals("locals2"))
		c.Send(200, []byte("ok"))
	})
	router.GET("/xx", func (c rider.Context) {
		fmt.Println(c.GetLocals("locals"))
		fmt.Println(c.GetLocals("locals2"))
		c.Send(200, []byte("ok2"))
	})
	return router
}

9: 下载模块

  • download go c.Download(filename, name, type)
  • @params
  • 1: filename: 文件所在路径加全名
  • 2: name: 指定下载时文件的名称,不指定默认取路径中的名称
  • 3: type: 下载文件的方式,attachment和inline。
app.GET("/download", func(c rider.Context) {
	c.Download(filename, name, type)
})
  • jwt
  • 作为中间件引入
app := rider.New()
app.USE(rider.RiderJwt("rider", time.Hour))
app.GET("/token", func(c rider.Context) {
	token, _ := c.Jwt().Set("test", " test")
	c.Send(200, []byte(token))
})
app.GET("/tokenparse", func(c rider.Context) {
	c.Logger().INFO(c.CookieValue("token"))
	c.Jwt().Delete("test")
	c.Jwt().DeleteAll()
	c.Jwt().Set("a", "b")
	fmt.Println(c.Jwt().Claims())
	fmt.Println(c.Jwt().ClaimsValue("a"))
})
app.Listen(":5002")

11: logger日志模块

  • logger
  • 注册服务后,日志模块会一同注册。
  • 通过smtp服务可以注册邮箱日志
  • 调用go app.Logger(8) 修改日志等级
  • 日志等级分为 1): fatalLevel uint8 = iota
  • 日志打印的同时服务也会退出
c.Logger().FATAL("")

2): panicLevel

c.Logger().PANIC("")

3): errorLevel

c.Logger().ERROR("")

4): warningLevel

c.Logger().WARNING("")

5): infoLevel

c.Logger().INFO("")

6): consoleLevel

c.Logger().CONSOLE("")

7): debugLevel

c.Logger().DEBUG("")
app := rider.New()
rlog := app.Logger(8)

12: smtp邮箱模块

Documentation

Overview

package router 路由注册模块,注册http请求(Get,Post,Delete,Option...via)

Index

Constants

View Source
const (
	MIMEApplicationJSON                  = "application/json"
	MIMEApplicationJSONCharsetUTF8       = MIMEApplicationJSON + "; " + charsetUTF8
	MIMEApplicationJavaScript            = "application/javascript"
	MIMEApplicationJavaScriptCharsetUTF8 = MIMEApplicationJavaScript + "; " + charsetUTF8
	MIMEApplicationXML                   = "application/xml"
	MIMEApplicationXMLCharsetUTF8        = MIMEApplicationXML + "; " + charsetUTF8
	MIMETextXML                          = "text/xml"
	MIMETextXMLCharsetUTF8               = MIMETextXML + "; " + charsetUTF8
	MIMEApplicationForm                  = "application/x-www-form-urlencoded"
	MIMEApplicationProtobuf              = "application/protobuf"
	MIMEApplicationMsgpack               = "application/msgpack"
	MIMETextHTML                         = "text/html"
	MIMETextHTMLCharsetUTF8              = MIMETextHTML + "; " + charsetUTF8
	MIMETextPlain                        = "text/plain"
	MIMETextPlainCharsetUTF8             = MIMETextPlain + "; " + charsetUTF8
	MIMEMultipartForm                    = "multipart/form-data"
	MIMEOctetStream                      = "application/octet-stream"
)

MIME types

View Source
const (
	HeaderDate                = "Date"
	HeaderEtag                = "Etag"
	HeaderAccept              = "Accept"
	HeaderAcceptEncoding      = "Accept-Encoding"
	HeaderAllow               = "Allow"
	HeaderAuthorization       = "Authorization"
	HeaderContentDisposition  = "Content-Disposition"
	HeaderContentEncoding     = "Content-Encoding"
	HeaderContentLength       = "Content-Length"
	HeaderContentType         = "Content-Type"
	HeaderCookie              = "Cookie"
	HeaderSetCookie           = "Set-Cookie"
	HeaderIfModifiedSince     = "If-Modified-Since"
	HeaderLastModified        = "Last-Modified"
	HeaderLocation            = "Location"
	HeaderUpgrade             = "Upgrade"
	HeaderVary                = "Vary"
	HeaderWWWAuthenticate     = "WWW-Authenticate"
	HeaderXForwardedFor       = "X-Forwarded-For"
	HeaderXForwardedProto     = "X-Forwarded-Proto"
	HeaderXForwardedProtocol  = "X-Forwarded-Protocol"
	HeaderXForwardedSsl       = "X-Forwarded-Ssl"
	HeaderXUrlScheme          = "X-Url-Scheme"
	HeaderXHTTPMethodOverride = "X-HTTP-Method-Override"
	HeaderXRealIP             = "X-Real-IP"
	HeaderXRequestID          = "X-Request-ID"
	HeaderServer              = "Server"
	HeaderOrigin              = "Origin"

	// Access control
	HeaderAccessControlRequestMethod    = "Access-Control-Request-Method"
	HeaderAccessControlRequestHeaders   = "Access-Control-Request-Headers"
	HeaderAccessControlAllowOrigin      = "Access-Control-Allow-Origin"
	HeaderAccessControlAllowMethods     = "Access-Control-Allow-Methods"
	HeaderAccessControlAllowHeaders     = "Access-Control-Allow-Headers"
	HeaderAccessControlAllowCredentials = "Access-Control-Allow-Credentials"
	HeaderAccessControlExposeHeaders    = "Access-Control-Expose-Headers"
	HeaderAccessControlMaxAge           = "Access-Control-Max-Age"

	// Security
	HeaderStrictTransportSecurity = "Strict-Transport-Security"
	HeaderXContentTypeOptions     = "X-Content-Type-Options"
	HeaderXXSSProtection          = "X-XSS-Protection"
	HeaderXFrameOptions           = "X-Frame-Options"
	HeaderContentSecurityPolicy   = "Content-Security-Policy"
)

Headers

View Source
const (
	HTTPGET     = http.MethodGet
	HTTPPOST    = http.MethodPost
	HTTPHEAD    = http.MethodHead
	HTTPOPTIONS = http.MethodOptions
	HTTPPUT     = http.MethodPut
	HTTPPATCH   = http.MethodPatch
	HTTPDELETE  = http.MethodDelete
	HTTPCONNECT = http.MethodConnect
)
View Source
const (
	BestCompression    = gzip.BestCompression
	BestSpeed          = gzip.BestSpeed
	DefaultCompression = gzip.DefaultCompression
	NoCompression      = gzip.NoCompression
)
View Source
const (
	Server = "rider"
)

Variables

View Source
var (
	ENV_Production  = "production"
	ENV_Development = "development"
	ENV_Debug       = "debug"
)
View Source
var ErrorHandle func(c Context, err string, code int)
View Source
var GlobalENV = ENV_Production

默认的执行的系统的环境,生产者环境

Functions

func HttpError

func HttpError(c Context, err string, code int)

func SetEnvDebug

func SetEnvDebug()

func SetEnvDevelopment

func SetEnvDevelopment()

func SetEnvMode

func SetEnvMode(mode string)

设置环境

func SetEnvProduction

func SetEnvProduction()

Types

type AccessControl added in v1.1.8

type AccessControl struct {
	AccessControlAllowOrigin      string
	AccessControlAllowHeaders     string
	AccessControlAllowMethods     string
	AccessControlAllowCredentials string
}

type BaseRender

type BaseRender interface {
	Render(w io.Writer, tplName string, data interface{}) error //tplName模板名称 ,data模板数据
}

type BaseRouter

type BaseRouter interface {
	USE(handlers ...HandlerFunc) //添加中间件
	ANY(path string, handlers ...HandlerFunc)
	POST(path string, handlers ...HandlerFunc)
	GetServer() *HttpServer
	SetServer(*HttpServer)
	GET(path string, handlers ...HandlerFunc)
	HEAD(path string, handlers ...HandlerFunc)
	OPTIONS(path string, handlers ...HandlerFunc)
	PUT(path string, handlers ...HandlerFunc)
	PATCH(path string, handlers ...HandlerFunc)
	DELETE(path string, handlers ...HandlerFunc)
	Kid(path string, router *Router)
	// contains filtered or unexported methods
}

跟路由和子路由需要实现的方法

type Config

type Config struct {
	ConfigHeaders  *ConfigHeaders
	EnableWeakEtag bool
}
var DefaultConfig *Config = &Config{
	ConfigHeaders:  DefaultConfigHeaders,
	EnableWeakEtag: true,
}

type ConfigHeaders

type ConfigHeaders struct {

	//其他默认响应头
	Server string //rider
	Date   string //time.Now().UTC().Format(http.TimeFormat)
}
var DefaultConfigHeaders *ConfigHeaders = &ConfigHeaders{
	Server: "rider",
	Date:   time.Now().UTC().Format(http.TimeFormat),
}

type Context

type Context interface {

	//实现中间件的链表处理
	Next(err ...NError) error

	//获取Response响应体内容
	Response() *Response

	//获取请求体部分
	Request() *Request

	//获取app初始化时注册的logger服务,用于生成日志
	Logger() *logger.LogQueue

	//###获取请求相关的数据,
	//给context传递变量,该变量在整个请求的传递中一直有效(中间件传递)
	SetLocals(key string, value interface{})

	//通过SetLocals设置的值可以在整个响应处理环节通过GetLocals获取
	GetLocals(key string) interface{}

	Locals() map[string]interface{} //获取SetLocals设置的所有变量,用户输出给模板

	// 删除locals里面的数据
	DeleteLocals(key string)

	// 删除locals的所有信息
	DeleteAllLocals()

	//只获取请求url中的查询字符串querystring的map[]string值
	Query() url.Values

	//根据字段名直接查询querystring某个字段名对应的值
	QueryString(key string) string

	// 当query不存在某一字段的值时,返回一个默认的值
	QueryDefault(key string, def string) string

	// 获取请求其
	Body() []byte

	//只获取post,put等的请求参数,
	PostForm() url.Values

	//根据字段名直接查询"请求体"某中个字段名对应的值
	PostFormValue(key string) string

	// 当post参数不存在某一字段的值时,返回一个默认的值
	PostFormDefault(key string, def string) string

	// 返回请求的参数(包括query和body的)
	Form() url.Values

	//根据字段名直接查询"请求参数"某中个字段名对应的值
	FormValue(key string) string

	// 当请求参数不存在某一字段的值时,返回一个默认的值
	FormDefault(key string, def string) string

	//获取请求路由 /:id/:xx中值,路由参数
	Params() map[string]string

	//获取请求路由中某字段的值
	Param(key string) string

	//注册的请求路径中存在正则匹配规则,取得的参数和取正则sub参数一样(详见param例子)
	PathParams() []string //通过正则匹配后得到的路径上的一些参数

	//当请求头的content-type为multipart/form-data时,获取请求中key对应的文件信息(多个文件时,只会获取第一个)
	FormFile(key string) (*UploadFile, error)

	//当请求头的content-type为multipart/form-data时,获取请求中key对应的文件列表
	FormFiles(key string) ([]*UploadFile, error)

	//将file保存,fileName指定完整的路径和名称(先调用FormFile或者FormFiles将返回的file传入即可)
	StoreFormFile(file *UploadFile, fileName string) (int64, error)

	//先通过FormFiles获取文件列表,指定path目录,存储文件的文件夹。文件名将会用随机字符串加文件的后缀名(file.GetFileExt())
	StoreFormFiles(files []*UploadFile, path string) ([]string, error)

	//获取请求头信息
	Header() http.Header

	//根据key获取请求头某一字段的值
	HeaderValue(key string) string

	//获取请求头的完整url
	URL() string

	//获取请求头的path
	Path() string

	//获取响应头的HTTP方法
	Method() string

	//获取请求来源的IP地址
	ClientIP() string

	//获取分配的请求id
	RequestID() string

	//判断请求是否为ajax
	IsAjax() bool

	//获取请求的cookies
	Cookies() []*http.Cookie

	//获取请求体中某一字段的cookie值
	CookieValue(key string) (string, error)

	//##响应相关
	//获取响应的状态码
	Status() int

	// 获取请求花费时间
	GetTimeCost() string

	//将http请求升级为hijack,hijack的信息保存在HijackUp中
	Hijack() (*HijackUp, error)

	//给客户端发送文件(可用户静态文件处理)
	SendFile(path string) error

	//下载,fileName为完整路径,name为下载时指定的下载名称,传""使用文件本身名称,typ指定attachment还是inline的方式下载,默认为attchment
	Download(fileName string, name string, typ string) error

	//获取完整的响应头信息
	WHeader() http.Header

	//获取响应头的某一字段值
	WHeaderValue(key string) string

	//设置cookie
	SetCookie(cookie http.Cookie)

	//根据cookie名删除cookie
	DeleteCookie(cookieName string)

	//获取系统默认注册的jwt服务("github.com/dgrijalva/jwt-go"),具体使用例子参考example/jwt
	Jwt() *riderJwter

	//设置响应头
	SetHeader(key, value string)

	//给响应头添加值
	AddHeader(key, value string)

	//给响应头设置contenttype
	SetCType(contentType string)

	//重定向
	Redirect(code int, targetUrl string)

	//给客户端发送数据
	Send(code int, d []byte) (int, error)

	//发送字符串
	SendString(code int, s string) (int, error)

	//给客户端发送json格式的数据
	SendJson(code int, i interface{}) (int, error)

	//负责模板渲染 ,只要实现了BaseRender,注册app服务是直接修改tplsRender的值
	Render(tplName string, data interface{})

	// 获取服务主机
	Host() string
	// contains filtered or unexported methods
}

type Error

type Error struct {
	Error      string
	StatusCode int
	StatusText string
	Stack      string
}

type ErrorHandler

type ErrorHandler interface {
	ErrorHandle(c *Context, err string, code int)
}

type HandlerFunc

type HandlerFunc func(context Context)

func Gzip

func Gzip(level int) HandlerFunc

func RiderJwt

func RiderJwt(tokenKey string, secret string, expires int, riderCookie *RiderCookie, useCookie bool) HandlerFunc

func (HandlerFunc) BeenHandler

func (h HandlerFunc) BeenHandler()

type HijackUp

type HijackUp struct {
	Size int64
	// contains filtered or unexported fields
}

func (*HijackUp) AddHeader

func (hj *HijackUp) AddHeader(key string, value string)

给hijack添加响应头

func (*HijackUp) Close

func (hj *HijackUp) Close()

关闭hijack conn

func (*HijackUp) GetHttp

func (hj *HijackUp) GetHttp() string

获取响应头的http格式

func (*HijackUp) Header

func (hj *HijackUp) Header() http.Header

获取响应头信息

func (*HijackUp) HeaderValue

func (hj *HijackUp) HeaderValue(key string) string

获取响应头某一字段的值

func (*HijackUp) SetCType

func (hj *HijackUp) SetCType(contentType string)

设置contenttype

func (*HijackUp) SetCookie

func (hj *HijackUp) SetCookie(cookie http.Cookie)

设置cookie

func (*HijackUp) SetHeader

func (hj *HijackUp) SetHeader(key string, value string)

func (*HijackUp) Write

func (hj *HijackUp) Write(data []byte) (size int, err error)

给客户端发送数据

func (*HijackUp) WriteHeader

func (hj *HijackUp) WriteHeader(code int)

type HttpServer

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

func (*HttpServer) NewHttpServer

func (h *HttpServer) NewHttpServer() *HttpServer

type IsRouterHandler

type IsRouterHandler interface {
	BeenHandler()
}

type NError

type NError struct {
	Status int
	Error  string
}

type RegisteredRouters

type RegisteredRouters map[string]handlerRouter

map["/home"]["GET"]*Router

type Request

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

func NewRequest

func NewRequest(r *http.Request) *Request

func (*Request) AddReqCookie

func (req *Request) AddReqCookie(cookie http.Cookie)

给请求体添加cookie

func (*Request) CType

func (req *Request) CType() string

func (*Request) ClientIP

func (req *Request) ClientIP() string

RemoteAddr to an "IP" address

func (*Request) CookieValue

func (req *Request) CookieValue(key string) (string, error)

获取某一字段的cookie

func (*Request) Cookies

func (req *Request) Cookies() []*http.Cookie

获取cookies

func (*Request) FormFile

func (req *Request) FormFile(key string) (*UploadFile, error)

当客户端的请求头的content-type为multipart/form-data时获取请求体内的文件 要获取请求传过来的文件,必须先调用r.parseMultipartForm(调用r.FormFile时会自动调用r.parseMultipartForm所以无需调用,只能获取第一个文件) 只会返回第一个文件

func (*Request) FormFiles

func (req *Request) FormFiles(key string) ([]*UploadFile, error)

根据key返回key的文件列表

func (*Request) Header

func (req *Request) Header() http.Header

func (*Request) HeaderValue

func (req *Request) HeaderValue(key string) string

func (*Request) IsAJAX

func (req *Request) IsAJAX() bool

IsAJAX returns if it is a ajax request

func (*Request) Method

func (req *Request) Method() string

获取请求的httpMethod

func (*Request) Param

func (req *Request) Param(key string) string

根据参数名称获取路由参数

func (*Request) Params

func (req *Request) Params() map[string]string

获取请求的路由参数

func (*Request) Path

func (req *Request) Path() string

Path returns requested path.

The path is valid until returning from RequestHandler.

func (*Request) RawQuery

func (req *Request) RawQuery() string

* 获取原始查询字符串 a=b&c=d

func (*Request) Req

func (req *Request) Req() *http.Request

func (*Request) RequestID

func (req *Request) RequestID() string

RequestID get unique ID with current request

func (*Request) RequestURI

func (req *Request) RequestURI() string

获取完整uri

func (*Request) StoreFormFile

func (req *Request) StoreFormFile(file *UploadFile, fileName string) (int64, error)

获取客户端传过来的文件,并且指定保存路径进行保存

func (*Request) StoreFormFiles

func (req *Request) StoreFormFiles(files []*UploadFile, path string) ([]string, error)

文件名会根据用生成的随机字符串,加上源文件后缀名,path为文件保存的路径 返回文件名列表

func (*Request) Url

func (req *Request) Url() string

type Requester

type Requester interface {
	NewRequest(r *http.Request) *Request //用传入的request生成一个Request

	RequestID() string //获取请求的id

	RawQuery() string                                                  //获取请求的原始字符串  a=1&b=2
	FormFile(key string) (*UploadFile, error)                          //请求头为multipart/form-data时获取key字段域的第一个文件
	FormFiles(key string) ([]*UploadFile, error)                       //请求头为multipart/form-data时获取key字段域的文件列表
	StoreFormFile(file *UploadFile, fileName string) (int64, error)    //FormFile返回一个文件,然后传入这里的第一个参数,保存到fileName文件
	StoreFormFiles(files []*UploadFile, path string) ([]string, error) //FormFile返回文件列表,传入第一个参数,保存的文件名是随机的字符串,后缀名取文件上传时的本身后缀名

	ContentType() string           //获取请求体的content-type
	Header(key string) http.Header //获取请求头信息
	ClientIP() string              //获取远程请求者的ip地址,会获取源地址(非代理地址)
	Path() string                  //获取请求的url路径
	IsAJAX() bool                  //验证请求是否为ajax请求
	Url() string                   //获取完整的请求路径  /x/x/a?a=x&c=s
	Method() string                //获取请求的方法
	Params() map[string]string     //获取请求的路径参数
	Param(key string) string       //获取某个请求路径参数的值(参数定义时的字段请勿重复,后面的直接覆盖之前的值)
	// contains filtered or unexported methods
}

type Response

type Response struct {
	Size int64
	// contains filtered or unexported fields
}

func NewResponse

func NewResponse(w http.ResponseWriter, server *HttpServer) (r *Response)

func (*Response) AddHeader

func (r *Response) AddHeader(key, value string)

func (*Response) CloseNotify

func (r *Response) CloseNotify() <-chan bool

在客户端关闭连接但还未发送响应体时,关闭连接

func (*Response) Flush

func (r *Response) Flush()

Flush implements the http.Flusher interface to allow an HTTP handler to flush buffered data to the client. See http.Flusher(https://golang.org/pkg/net/http/#Flusher)

func (*Response) Header

func (r *Response) Header() http.Header

func (*Response) HeaderValue

func (r *Response) HeaderValue(key string) string

func (*Response) Hijack

func (r *Response) Hijack() (net.Conn, *bufio.ReadWriter, error)

Hijack implements the http.Hijacker interface to allow an HTTP handler to take over the connection. See https://golang.org/pkg/net/http/#Hijacker

func (*Response) Redirect

func (r *Response) Redirect(code int, targetUrl string)

redirect会忽略setstatuscode设置的状态码

func (*Response) Res added in v1.1.8

func (r *Response) Res() http.ResponseWriter

func (*Response) SetCType

func (r *Response) SetCType(contenttype string)

func (*Response) SetCookie

func (r *Response) SetCookie(cookie http.Cookie)

设置cookies

func (*Response) SetHeader

func (r *Response) SetHeader(key, val string)

func (*Response) SetWriter

func (r *Response) SetWriter(w http.ResponseWriter) *Response

func (*Response) Write

func (r *Response) Write(data []byte) (size int, err error)

给client发送消息,json,text,html,xml...(不发送模板,模板请用render)

func (*Response) WriteHeader

func (r *Response) WriteHeader(code int)

type Rider added in v1.1.8

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

http服务的入口,用户初始化和缓存服务的一些信息

func New

func New() *Rider

初始化服务入口组建

func (*Rider) ANY added in v1.1.8

func (r *Rider) ANY(path string, handlers ...HandlerFunc)

func (*Rider) AfterHttpResponse added in v1.1.8

func (r *Rider) AfterHttpResponse(ahf func(Context, int, time.Duration))

请求处理完成,自定义事件(比如自定义日志打印,自定义日志库)

func (*Rider) CONNECT added in v1.1.8

func (r *Rider) CONNECT(path string, handlers ...HandlerFunc)

func (*Rider) DELETE added in v1.1.8

func (r *Rider) DELETE(path string, handlers ...HandlerFunc)

func (*Rider) Error added in v1.1.8

func (r *Rider) Error(errorHandle func(c Context, err string, code int))

重写错误处理

func (*Rider) GET added in v1.1.8

func (r *Rider) GET(path string, handlers ...HandlerFunc)

func (*Rider) GetHttpServer added in v1.1.8

func (r *Rider) GetHttpServer() *http.Server

返回http.Server供自定义

func (*Rider) GetLogger added in v1.1.8

func (r *Rider) GetLogger() *logger.LogQueue

获取日志

func (*Rider) GetRoutes added in v1.1.11

func (r *Rider) GetRoutes() *Router

获取路由信息

func (*Rider) GetServer added in v1.1.8

func (r *Rider) GetServer() *HttpServer

返回服务内部的http服务入口

func (*Rider) Graceful added in v1.1.8

func (r *Rider) Graceful(port string)

func (*Rider) HEAD added in v1.1.8

func (r *Rider) HEAD(path string, handlers ...HandlerFunc)

func (*Rider) Kid added in v1.1.8

func (r *Rider) Kid(path string, middleware ...IsRouterHandler)

func (*Rider) Listen added in v1.1.8

func (r *Rider) Listen(port string) (err error)

提供端口监听服务,监听rider里面的serveMux,调用http自带的服务启用方法

func (*Rider) Logger added in v1.1.8

func (r *Rider) Logger(level int) *logger.LogQueue

引入日志模块

func (*Rider) OPTIONS added in v1.1.8

func (r *Rider) OPTIONS(path string, handlers ...HandlerFunc)

func (*Rider) PATCH added in v1.1.8

func (r *Rider) PATCH(path string, handlers ...HandlerFunc)

func (*Rider) POST added in v1.1.8

func (r *Rider) POST(path string, handlers ...HandlerFunc)

func (*Rider) PUT added in v1.1.8

func (r *Rider) PUT(path string, handlers ...HandlerFunc)

func (*Rider) Routers added in v1.1.8

func (r *Rider) Routers() *Router

func (*Rider) ServeHTTP added in v1.1.11

func (r *Rider) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Rider) SetAccessCtl added in v1.1.8

func (r *Rider) SetAccessCtl(access func(c Context) *AccessControl)

设置跨域信息

func (*Rider) SetHttpMaxDefaultMultipartBodySze added in v1.2.3

func (r *Rider) SetHttpMaxDefaultMultipartBodySze(d int64)

func (*Rider) SetHttpMaxHeaderBytes added in v1.2.3

func (r *Rider) SetHttpMaxHeaderBytes(d int)

func (*Rider) SetHttpReadTimeout added in v1.2.3

func (r *Rider) SetHttpReadTimeout(d time.Duration)

func (*Rider) SetHttpWriteTimeout added in v1.2.3

func (r *Rider) SetHttpWriteTimeout(d time.Duration)

func (*Rider) SetStatic added in v1.1.8

func (r *Rider) SetStatic(staticPath string, prefix string)

设置静态文件目录 staticPath为文件在服务器的实际未知 prefix,指客户端请求时的虚拟路径

func (*Rider) SetViews added in v1.1.8

func (r *Rider) SetViews(tplDir string, extName string, funcMap template.FuncMap)

设置模板路径(默认不缓存) tplDir以"/"开头,不会对其进行操作。如果直接以路径开头的,前面会默认跟上当前工作路径 调用该方法,默认启用模版

func (*Rider) TRACE added in v1.1.8

func (r *Rider) TRACE(path string, handlers ...HandlerFunc)

func (*Rider) USE added in v1.1.8

func (r *Rider) USE(handlers ...HandlerFunc)

为app服务添加中间处理

func (*Rider) ViewEngine added in v1.1.8

func (r *Rider) ViewEngine(render BaseRender)

设置模板接口 (实现BaseRender接口的Render方法) 须在SetViews方法之前调用

type RiderCookie added in v1.1.9

type RiderCookie struct {
	Secure   bool
	HttpOnly bool
	SameSite http.SameSite
	Raw      string
	Unparsed []string // Raw text of unparsed attribute-value pairs
}

type Router

type Router struct {
	Handler    HandlerFunc
	Middleware []HandlerFunc
	Method     string //定义的请求的方法
	// contains filtered or unexported fields
}

子路由配置

func NewRouter

func NewRouter() *Router

子路由初始化方法

func (*Router) ANY

func (r *Router) ANY(path string, handlers ...HandlerFunc)

http方法的子路由绑定使用,或者根路由通过入口最终进入的实现http服务绑定的地方

func (*Router) BeenHandler

func (r *Router) BeenHandler()

func (*Router) CONNECT

func (r *Router) CONNECT(path string, handlers ...HandlerFunc)

func (*Router) DELETE

func (r *Router) DELETE(path string, handlers ...HandlerFunc)

func (*Router) FrontMiddleware

func (r *Router) FrontMiddleware(rootMiddleware ...HandlerFunc)

添加中间件(将根路由服务的中间件加进来)

func (*Router) GET

func (r *Router) GET(path string, handlers ...HandlerFunc)

func (*Router) GetServer

func (r *Router) GetServer() *HttpServer

将服务注入子路由

func (*Router) HEAD

func (r *Router) HEAD(path string, handlers ...HandlerFunc)

func (*Router) Kid

func (r *Router) Kid(path string, router ...IsRouterHandler)

func (*Router) OPTIONS

func (r *Router) OPTIONS(path string, handlers ...HandlerFunc)

func (*Router) PATCH

func (r *Router) PATCH(path string, handlers ...HandlerFunc)

func (*Router) POST

func (r *Router) POST(path string, handlers ...HandlerFunc)

func (*Router) PUT

func (r *Router) PUT(path string, handlers ...HandlerFunc)

func (*Router) Path

func (r *Router) Path() string

获取完整路径

func (*Router) ServeHTTP

func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Router) SetServer

func (r *Router) SetServer(server *HttpServer)

获取子路由内部的服务来源

func (*Router) TRACE

func (r *Router) TRACE(path string, handlers ...HandlerFunc)

func (*Router) USE

func (r *Router) USE(middleware ...HandlerFunc)

调用使用添加中间件(将app服务的中间件加进来)

type Stat added in v1.2.2

type Stat interface {
	Stat() (os.FileInfo, error)
}

获取文件信息的接口

type UploadFile

type UploadFile struct {
	File multipart.File

	Ext  string
	Name string
	// contains filtered or unexported fields
}

func NewUploadFile

func NewUploadFile(f multipart.File, header *multipart.FileHeader) *UploadFile

func (*UploadFile) Size

func (f *UploadFile) Size() int64

获取上传的文件大小,具体需要的时候在进行赋值

func (*UploadFile) StoreFile

func (f *UploadFile) StoreFile(filename string) (size int64, err error)

存储http请求的文件到服务器

Jump to

Keyboard shortcuts

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