gin

package module
v0.0.0-...-a0b1be5 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2023 License: MIT Imports: 37 Imported by: 0

README

Gin Web Framework

Build Status codecov Go Report Card GoDoc Sourcegraph Open Source Helpers Release TODOs

Gin is a web framework written in Go. It features a martini-like API with performance that is up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.

The key features of Gin are:

  • Zero allocation router
  • Fast
  • Middleware support
  • Crash-free
  • JSON validation
  • Routes grouping
  • Error management
  • Rendering built-in
  • Extendable

Getting started

Prerequisites
  • Go: any one of the three latest major releases (we test it with these).
Getting Gin

With Go module support, simply add the following import

import "github.com/gin-gonic/gin"

to your code, and then go [build|run|test] will automatically fetch the necessary dependencies.

Otherwise, run the following Go command to install the gin package:

$ go get -u github.com/gin-gonic/gin
Running Gin

First you need to import Gin package for using Gin, one simplest example likes the follow example.go:

package main

import (
  "net/http"

  "github.com/gin-gonic/gin"
)

func main() {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
      "message": "pong",
    })
  })
  r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

And use the Go command to run the demo:

# run example.go and visit 0.0.0.0:8080/ping on browser
$ go run example.go
Learn more examples
Quick Start

Learn and practice more examples, please read the Gin Quick Start which includes API examples and builds tag.

Examples

A number of ready-to-run examples demonstrating various use cases of Gin on the Gin examples repository.

Documentation

See API documentation and descriptions for package.

All documentation is available on the Gin website.

Articles about Gin

A curated list of awesome Gin framework.

Benchmarks

Gin uses a custom version of HttpRouter, see all benchmarks details.

Benchmark name (1) (2) (3) (4)
BenchmarkGin_GithubAll 43550 27364 ns/op 0 B/op 0 allocs/op
BenchmarkAce_GithubAll 40543 29670 ns/op 0 B/op 0 allocs/op
BenchmarkAero_GithubAll 57632 20648 ns/op 0 B/op 0 allocs/op
BenchmarkBear_GithubAll 9234 216179 ns/op 86448 B/op 943 allocs/op
BenchmarkBeego_GithubAll 7407 243496 ns/op 71456 B/op 609 allocs/op
BenchmarkBone_GithubAll 420 2922835 ns/op 720160 B/op 8620 allocs/op
BenchmarkChi_GithubAll 7620 238331 ns/op 87696 B/op 609 allocs/op
BenchmarkDenco_GithubAll 18355 64494 ns/op 20224 B/op 167 allocs/op
BenchmarkEcho_GithubAll 31251 38479 ns/op 0 B/op 0 allocs/op
BenchmarkGocraftWeb_GithubAll 4117 300062 ns/op 131656 B/op 1686 allocs/op
BenchmarkGoji_GithubAll 3274 416158 ns/op 56112 B/op 334 allocs/op
BenchmarkGojiv2_GithubAll 1402 870518 ns/op 352720 B/op 4321 allocs/op
BenchmarkGoJsonRest_GithubAll 2976 401507 ns/op 134371 B/op 2737 allocs/op
BenchmarkGoRestful_GithubAll 410 2913158 ns/op 910144 B/op 2938 allocs/op
BenchmarkGorillaMux_GithubAll 346 3384987 ns/op 251650 B/op 1994 allocs/op
BenchmarkGowwwRouter_GithubAll 10000 143025 ns/op 72144 B/op 501 allocs/op
BenchmarkHttpRouter_GithubAll 55938 21360 ns/op 0 B/op 0 allocs/op
BenchmarkHttpTreeMux_GithubAll 10000 153944 ns/op 65856 B/op 671 allocs/op
BenchmarkKocha_GithubAll 10000 106315 ns/op 23304 B/op 843 allocs/op
BenchmarkLARS_GithubAll 47779 25084 ns/op 0 B/op 0 allocs/op
BenchmarkMacaron_GithubAll 3266 371907 ns/op 149409 B/op 1624 allocs/op
BenchmarkMartini_GithubAll 331 3444706 ns/op 226551 B/op 2325 allocs/op
BenchmarkPat_GithubAll 273 4381818 ns/op 1483152 B/op 26963 allocs/op
BenchmarkPossum_GithubAll 10000 164367 ns/op 84448 B/op 609 allocs/op
BenchmarkR2router_GithubAll 10000 160220 ns/op 77328 B/op 979 allocs/op
BenchmarkRivet_GithubAll 14625 82453 ns/op 16272 B/op 167 allocs/op
BenchmarkTango_GithubAll 6255 279611 ns/op 63826 B/op 1618 allocs/op
BenchmarkTigerTonic_GithubAll 2008 687874 ns/op 193856 B/op 4474 allocs/op
BenchmarkTraffic_GithubAll 355 3478508 ns/op 820744 B/op 14114 allocs/op
BenchmarkVulcan_GithubAll 6885 193333 ns/op 19894 B/op 609 allocs/op
  • (1): Total Repetitions achieved in constant time, higher means more confident result
  • (2): Single Repetition Duration (ns/op), lower is better
  • (3): Heap Memory (B/op), lower is better
  • (4): Average Allocations per Repetition (allocs/op), lower is better

Middlewares

You can find many useful Gin middlewares at gin-contrib.

Users

Awesome project lists using Gin web framework.

  • gorush: A push notification server written in Go.
  • fnproject: The container native, cloud agnostic serverless platform.
  • photoprism: Personal photo management powered by Go and Google TensorFlow.
  • lura: Ultra performant API Gateway with middlewares.
  • picfit: An image resizing server written in Go.
  • dkron: Distributed, fault tolerant job scheduling system.

Contributing

Gin is the work of hundreds of contributors. We appreciate your help!

Please see CONTRIBUTING for details on submitting patches and the contribution workflow.

Documentation

Overview

Package gin implements a HTTP web framework called gin.

See https:// 更多关于杜松子酒的信息

Index

Constants

View Source
const (
	MIMEJSON              = binding.MIMEJSON
	MIMEHTML              = binding.MIMEHTML
	MIMEXML               = binding.MIMEXML
	MIMEXML2              = binding.MIMEXML2
	MIMEPlain             = binding.MIMEPlain
	MIMEPOSTForm          = binding.MIMEPOSTForm
	MIMEMultipartPOSTForm = binding.MIMEMultipartPOSTForm
	MIMEYAML              = binding.MIMEYAML
	MIMETOML              = binding.MIMETOML
)

内容类型MIME最常用的数据格式

View Source
const (
	// 在Google应用引擎上运行时的平台googleappengine
	// 信任X-Appengine-Remote-Addr来确定客户端的IP
	PlatformGoogleAppEngine = "X-Appengine-Remote-Addr"
	// 使用Cloudflare的CDN时的平台Cloudflare
	// Trust CF-Connecting-IP用于确定客户端的IP
	PlatformCloudflare = "CF-Connecting-IP"
)

信任的平台

View Source
const (
	// DebugMode表示gin模式为debug
	DebugMode = "debug"
	// ReleaseMode表示gin模式为release
	ReleaseMode = "release"
	// TestMode表示gin模式为test
	TestMode = "test"
)
View Source
const AuthUserKey = "user"

AuthUserKey是基本验证中用户凭据的cookie名称

View Source
const BindKey = "_gin-gonic/gin/bindkey"

BindKey默认绑定键

View Source
const BodyBytesKey = "_gin-gonic/gin/bodybyteskey"

BodyBytesKey默认的体字节键

View Source
const ContextKey = "_gin-gonic/gin/contextkey"

ContextKey是Context返回自身的键

View Source
const EnvGinMode = "GIN_MODE"

EnvGinMode为gin模式的环境名

View Source
const Version = "v1.9.1"

Version是当前gin框架的版本

Variables

View Source
var DebugPrintRouteFunc func(httpMethod, absolutePath, handlerName string, nuHandlers int)

DebugPrintRouteFunc调试日志输出格式

View Source
var DefaultErrorWriter io.Writer = os.Stderr

DefaultErrorWriter是默认io Gin用来调试错误的写入器

View Source
var DefaultWriter io.Writer = os.Stdout

defaultwwriter是默认的io Gin用于调试输出和中间件输出的写入器,如Logger()或Recovery() 请注意,Logger和Recovery都提供了自定义的方式来配置它们的输出 要在Windows中支持着色,请使用:import "github.com/mattn/go-colorable"杜松子酒 defaultwwriter = colorable.NewColorableStdout()

Functions

func CreateTestContext

func CreateTestContext(w http.ResponseWriter) (c *Context, r *Engine)

CreateTestContext为测试目的返回一个新的引擎和上下文

func Dir

func Dir(root string, listDirectory bool) http.FileSystem

Dir返回一个http http.FileServer()可以使用的文件系统 它在router.Static()内部使用 如果listDirectory == true,那么它的工作方式与http.Dir()相同,否则它返回一个文件系统,阻止http.FileServer()列出目录文件

func DisableBindValidation

func DisableBindValidation()

DisableBindValidation关闭默认验证器

func DisableConsoleColor

func DisableConsoleColor()

DisableConsoleColor禁用控制台的颜色输出

func EnableJsonDecoderDisallowUnknownFields

func EnableJsonDecoderDisallowUnknownFields()

EnableJsonDecoderDisallowUnknownFields为绑定设置为true EnableDecoderDisallowUnknownFields调用JSON Decoder实例上的DisallowUnknownFields方法

func EnableJsonDecoderUseNumber

func EnableJsonDecoderUseNumber()

EnableJsonDecoderUseNumber为绑定设置为true EnableDecoderUseNumber以调用JSON Decoder实例上的UseNumber方法

func ForceConsoleColor

func ForceConsoleColor()

ForceConsoleColor强制控制台的颜色输出

func IsDebugging

func IsDebugging() bool

如果框架在调试模式下运行,IsDebugging返回true 使用SetMode(gin.ReleaseMode)来禁用调试模式

func Mode

func Mode() string

Mode返回当前gin模式

func SetMode

func SetMode(value string)

SetMode根据输入的字符串设置gin模式

Types

type Accounts

type Accounts map[string]string

Accounts为授权登录的用户/通行证列表定义一个键/值

type Context

type Context struct {
	Request *http.Request
	Writer  ResponseWriter

	Params Params

	// Keys是每个请求上下文专用的键/值对
	Keys map[string]any

	// Errors是附加到使用此上下文的所有处理程序/中间件的错误列表
	Errors errorMsgs

	// Accepted定义了一个手动接受的格式列表,用于内容协商
	Accepted []string
	// contains filtered or unexported fields
}

环境是杜松子酒最重要的部分 例如,它允许我们在中间件之间传递变量、管理流、验证请求的JSON并呈现JSON响应

func CreateTestContextOnly

func CreateTestContextOnly(w http.ResponseWriter, r *Engine) (c *Context)

CreateTestContextOnly返回基于引擎的新上下文,用于测试目的

func (*Context) Abort

func (c *Context) Abort()

Abort防止调用挂起的处理程序 注意,这不会停止当前处理程序 假设您有一个授权中间件,用于验证当前请求是否已授权 如果授权失败(例如:密码不匹配),调用Abort以确保不调用此请求的其余处理程序

func (*Context) AbortWithError

func (c *Context) AbortWithError(code int, err error) *Error

AbortWithError在内部调用`AbortWithStatus()`和`Error()` 此方法停止链,写入状态码并将指定的错误推入' c.Errors ' 有关详细信息,请参阅Context.Error()

func (*Context) AbortWithStatus

func (c *Context) AbortWithStatus(code int)

AbortWithStatus调用`Abort()`并写入带有指定状态码的头文件 例如,验证请求失败时可以使用:context.AbortWithStatus(401)

func (*Context) AbortWithStatusJSON

func (c *Context) AbortWithStatusJSON(code int, jsonObj any)

AbortWithStatusJSON调用' Abort() ',然后在内部调用' JSON ' 此方法停止链,编写状态代码并返回JSON主体 它还将Content-Type设置为“application/json”

func (*Context) AddParam

func (c *Context) AddParam(key, value string)

AddParam将参数添加到上下文中,并用给定的值替换路径参数键,用于端到端测试 示例Route: "/user/:id"AddParam("id", 1) Result: "/user/1"

func (*Context) AsciiJSON

func (c *Context) AsciiJSON(code int, obj any)

AsciiJSON将给定的结构作为JSON序列化到响应体中,并使用unicode到ASCII字符串 它还将Content-Type设置为“application/json”

func (*Context) Bind

func (c *Context) Bind(obj any) error

Bind检查方法和内容类型以自动选择绑定引擎,具体取决于“内容类型” 头文件使用了不同的绑定,例如:"application/json"——比;JSON绑定"application/xml"——比;如果Content-Type == "application/ JSON "使用JSON或XML作为JSON输入 它将json有效负载解码为指定为指针的结构 它会写一个400的错误,并设置Content-Type header "text/plain"在响应中,如果输入无效

func (*Context) BindHeader

func (c *Context) BindHeader(obj any) error

BindHeader是c.MustBindWith(obj, binding.Header)的快捷方式

func (*Context) BindJSON

func (c *Context) BindJSON(obj any) error

BindJSON是c.MustBindWith(obj, binding.JSON)的快捷方式

func (*Context) BindQuery

func (c *Context) BindQuery(obj any) error

BindQuery是c.MustBindWith(obj, binding.Query)的快捷方式

func (*Context) BindTOML

func (c *Context) BindTOML(obj any) error

BindTOML是c.MustBindWith(obj, binding.TOML)的快捷方式

func (*Context) BindUri

func (c *Context) BindUri(obj any) error

BindUri使用binding.Uri绑定传递的结构指针 如果发生任何错误,它将使用HTTP 400中止请求

func (*Context) BindWith

func (c *Context) BindWith(obj any, b binding.Binding) error

BindWith使用指定的绑定引擎绑定传递的结构指针 参见绑定包

func (*Context) BindXML

func (c *Context) BindXML(obj any) error

BindXML是c.MustBindWith(obj, binding.BindXML)的快捷方式

func (*Context) BindYAML

func (c *Context) BindYAML(obj any) error

BindYAML是c.MustBindWith(obj, binding.YAML)的快捷方式

func (*Context) ClientIP

func (c *Context) ClientIP() string

ClientIP实现了一个最佳努力算法来返回真实的客户端IP 它在底层调用c.RemoteIP()来检查远程IP是否是可信代理 如果是,它将尝试解析Engine中定义的标头 RemoteIPHeaders(缺省为[X-Forwarded-For, X-Real-Ip]) 如果报头在语法上无效或远程IP不对应于可信代理,则返回远程IP(来自Request.RemoteAddr)

func (*Context) ContentType

func (c *Context) ContentType() string

ContentType返回请求的Content-Type报头

func (*Context) Cookie

func (c *Context) Cookie(name string) (string, error)

Cookie返回请求中提供的命名Cookie,如果没有找到,则返回ErrNoCookie 并返回未转义的命名cookie 如果多个cookie与给定的名称匹配,则只返回一个cookie

func (*Context) Copy

func (c *Context) Copy() *Context

Copy返回当前上下文的副本,该副本可在请求作用域之外安全地使用 当必须将上下文传递给程序时,必须使用此方法

func (*Context) Data

func (c *Context) Data(code int, contentType string, data []byte)

Data将一些数据写入主体流并更新HTTP代码

func (*Context) DataFromReader

func (c *Context) DataFromReader(code int, contentLength int64, contentType string, reader io.Reader, extraHeaders map[string]string)

DataFromReader将指定的阅读器写入正文流并更新HTTP代码

func (*Context) Deadline

func (c *Context) Deadline() (deadline time.Time, ok bool)

当c.Request没有Context时,Deadline返回没有Deadline (ok==false)

func (*Context) DefaultPostForm

func (c *Context) DefaultPostForm(key, defaultValue string) string

DefaultPostForm从存在的POST url编码表单或多部分表单返回指定的键,否则返回指定的defaultValue字符串 参见:PostForm()和GetPostForm()了解更多信息

func (*Context) DefaultQuery

func (c *Context) DefaultQuery(key, defaultValue string) string

如果存在,则返回键控url查询值,否则返回指定的defaultValue字符串 更多信息请参见:Query()和GetQuery() GET / ?name=姓名&lastname= c.DefaultQuery("name", "unknown") ==姓名"c.DefaultQuery("id", "none") == "none"c.DefaultQuery("lastname", "none") == "

func (*Context) Done

func (c *Context) Done() <-chan struct{}

当c.Request没有上下文时,Done返回nil (chan将永远等待)

func (*Context) Err

func (c *Context) Err() error

当c.Request没有Context时,Err返回nil

func (*Context) Error

func (c *Context) Error(err error) *Error

Error将错误附加到当前上下文 错误被推入错误列表 对解析请求期间发生的每个错误调用Error是一个好主意 中间件可用于收集所有错误并将它们一起推送到数据库、打印日志或将其附加到HTTP响应中 如果err为nil, Error将出现Panic

func (*Context) File

func (c *Context) File(filepath string)

File以一种有效的方式将指定的文件写入体流

func (*Context) FileAttachment

func (c *Context) FileAttachment(filepath, filename string)

FileAttachment以一种有效的方式将指定的文件写入正文流 在客户端,文件通常会以给定的文件名下载

func (*Context) FileFromFS

func (c *Context) FileFromFS(filepath string, fs http.FileSystem)

FileFromFS从http写入指定的文件 文件系统以一种有效的方式进入主体流

func (*Context) FormFile

func (c *Context) FormFile(name string) (*multipart.FileHeader, error)

FormFile返回所提供表单键的第一个文件

func (*Context) FullPath

func (c *Context) FullPath() string

FullPath返回匹配的路由完整路径 对于未找到的路由返回一个空字符串 router.GET("/user/:id", func(c *gin.Context) {c. fullpath () == "/user/:id"真正})

func (*Context) Get

func (c *Context) Get(key string) (value any, exists bool)

Get返回给定键的值,即:(value, true) 如果值不存在,则返回(nil, false)

func (*Context) GetBool

func (c *Context) GetBool(key string) (b bool)

GetBool返回与键相关联的值作为布尔值

func (*Context) GetDuration

func (c *Context) GetDuration(key string) (d time.Duration)

GetDuration以持续时间的形式返回与键相关的值

func (*Context) GetFloat64

func (c *Context) GetFloat64(key string) (f64 float64)

GetFloat64返回与该键相关的值作为float64

func (*Context) GetHeader

func (c *Context) GetHeader(key string) string

GetHeader从请求头返回值

func (*Context) GetInt

func (c *Context) GetInt(key string) (i int)

GetInt以整数形式返回与键相关的值

func (*Context) GetInt64

func (c *Context) GetInt64(key string) (i64 int64)

GetInt64以整数形式返回与键关联的值

func (*Context) GetPostForm

func (c *Context) GetPostForm(key string) (string, bool)

GetPostForm类似于PostForm(key) 如果存在' (value, true) '(即使值是空字符串),则从POST url编码形式或多部分形式返回指定的键,否则返回("", false) 例如,在PATCH请求更新用户的电子邮件时:email=mail@example.com——>("mail@example.com", true):= GetPostForm("email")设置email为"mail@example.com"电子邮件 = --& gt;("", true):= GetPostForm("email")设置email为"——比;("", false):= GetPostForm(&q

func (*Context) GetPostFormArray

func (c *Context) GetPostFormArray(key string) (values []string, ok bool)

GetPostFormArray返回给定表单键的字符串切片,以及是否至少存在一个给定键的布尔值

func (*Context) GetPostFormMap

func (c *Context) GetPostFormMap(key string) (map[string]string, bool)

GetPostFormMap返回给定表单键的映射,以及一个布尔值,用于判断给定键是否至少存在一个值

func (*Context) GetQuery

func (c *Context) GetQuery(key string) (string, bool)

GetQuery类似于Query(),如果存在' (value, true) '(即使值是空字符串),它返回键控url查询值,否则它返回' ("", false) ' 它是' c.Request.URL.Query().Get(key) ' GET /?name=Manu&lastname= ("Manu", true) == c.GetQuery("name") ("", false) == c.GetQuery("id") ("", true) == c.GetQuery("lastname")

func (*Context) GetQueryArray

func (c *Context) GetQueryArray(key string) (values []string, ok bool)

GetQueryArray返回给定查询键的字符串切片,以及一个布尔值,用于判断给定键是否至少存在一个值

func (*Context) GetQueryMap

func (c *Context) GetQueryMap(key string) (map[string]string, bool)

GetQueryMap返回给定查询键的映射,加上一个布尔值,用于判断给定键是否至少存在一个值

func (*Context) GetRawData

func (c *Context) GetRawData() ([]byte, error)

GetRawData返回流数据

func (*Context) GetString

func (c *Context) GetString(key string) (s string)

GetString以字符串的形式返回与键相关的值

func (*Context) GetStringMap

func (c *Context) GetStringMap(key string) (sm map[string]any)

GetStringMap以接口映射的形式返回与键相关的值

func (*Context) GetStringMapString

func (c *Context) GetStringMapString(key string) (sms map[string]string)

GetStringMapString以字符串映射的形式返回与键相关的值

func (*Context) GetStringMapStringSlice

func (c *Context) GetStringMapStringSlice(key string) (smss map[string][]string)

GetStringMapStringSlice返回与键相关的值,作为到字符串切片的映射

func (*Context) GetStringSlice

func (c *Context) GetStringSlice(key string) (ss []string)

GetStringSlice以字符串切片的形式返回与键相关的值

func (*Context) GetTime

func (c *Context) GetTime(key string) (t time.Time)

GetTime返回与键相关的值作为time

func (*Context) GetUint

func (c *Context) GetUint(key string) (ui uint)

GetUint以无符号整数的形式返回与键相关的值

func (*Context) GetUint64

func (c *Context) GetUint64(key string) (ui64 uint64)

GetUint64以无符号整数的形式返回与键相关的值

func (*Context) HTML

func (c *Context) HTML(code int, name string, obj any)

HTML呈现由其文件名指定的HTTP模板 它还更新HTTP代码并将Content-Type设置为"text/html" 参见http://golang.org/doc/articles/wiki/

func (*Context) Handler

func (c *Context) Handler() HandlerFunc

Handler返回主处理程序

func (*Context) HandlerName

func (c *Context) HandlerName() string

HandlerName返回主处理程序的名称 例如,如果处理程序为“handleGetUsers()”,则此函数将返回“main.handleGetUsers”

func (*Context) HandlerNames

func (c *Context) HandlerNames() []string

HandlerNames按照HandlerName()的语义,按降序返回此上下文的所有已注册处理程序的列表

func (*Context) Header

func (c *Context) Header(key, value string)

Header是c.Writer.Header()的智能快捷方式 集(关键字,值) 它在响应中写入一个标头 如果value == "",此方法将删除头' c.Writer.Header().Del(key) '

func (*Context) IndentedJSON

func (c *Context) IndentedJSON(code int, obj any)

indetedjson将给定的结构序列化为漂亮的JSON(缩进+ endlines)到响应体中 它还将Content-Type设置为“application/json” 警告:我们建议仅用于开发目的,因为打印漂亮的JSON会消耗更多的CPU和带宽 使用Context.JSON()代替

func (*Context) IsAborted

func (c *Context) IsAborted() bool

如果当前上下文被中止,IsAborted返回true

func (*Context) IsWebsocket

func (c *Context) IsWebsocket() bool

如果请求头表明客户端正在发起websocket握手,IsWebsocket返回true

func (*Context) JSON

func (c *Context) JSON(code int, obj any)

JSON将给定的结构作为JSON序列化到响应体中 它还将Content-Type设置为“application/json”

func (*Context) JSONP

func (c *Context) JSONP(code int, obj any)

JSONP将给定的结构作为JSON序列化到响应体中 它向响应体添加填充,以便从位于与客户端不同域的服务器请求数据 它还将Content-Type设置为"application/javascript"

func (*Context) MultipartForm

func (c *Context) MultipartForm() (*multipart.Form, error)

MultipartForm是解析后的多部分表单,包括文件上传

func (*Context) MustBindWith

func (c *Context) MustBindWith(obj any, b binding.Binding) error

MustBindWith使用指定的绑定引擎绑定传递的结构指针 如果发生任何错误,它将使用HTTP 400中止请求 参见绑定包

func (*Context) MustGet

func (c *Context) MustGet(key string) any

如果给定的键存在,则必须返回该键的值,否则会产生Panic

func (*Context) Negotiate

func (c *Context) Negotiate(code int, config Negotiate)

根据可接受的Accept格式协商调用不同的Render

func (*Context) NegotiateFormat

func (c *Context) NegotiateFormat(offered ...string) string

NegotiateFormat返回一个可接受的Accept格式

func (*Context) Next

func (c *Context) Next()

Next应该只在中间件内部使用 它执行调用处理程序内部链中的挂起处理程序 参见GitHub中的示例

func (*Context) Param

func (c *Context) Param(key string) string

参数返回URL参数的值 它是c. param . byname (key) router.GET("/user/:id", func(c *gin.Context) {GET请求/user/john id:= c. param ("id") id == "/john"一个GET请求到/user/john/ id:= c.参数("id") id == "/john/"})

func (*Context) PostForm

func (c *Context) PostForm(key string) (value string)

PostForm从存在的POST url编码表单或多部分表单返回指定的键,否则返回空字符串' ("") '

func (*Context) PostFormArray

func (c *Context) PostFormArray(key string) (values []string)

PostFormArray返回给定表单键的字符串切片 切片的长度取决于具有给定键的参数的数量

func (*Context) PostFormMap

func (c *Context) PostFormMap(key string) (dicts map[string]string)

PostFormMap返回给定表单键的映射

func (*Context) ProtoBuf

func (c *Context) ProtoBuf(code int, obj any)

ProtoBuf将给定的结构体作为ProtoBuf序列化到响应体中

func (*Context) PureJSON

func (c *Context) PureJSON(code int, obj any)

PureJSON将给定的结构作为JSON序列化到响应体中 与JSON不同的是,PureJSON不会用它们的unicode实体替换特殊的html字符

func (*Context) Query

func (c *Context) Query(key string) (value string)

Query如果存在则返回键控url查询值,否则返回空字符串' ("") ' 这是快捷方式的' c.Request.URL.Query().Get(key) ' GET /path?id=1234&name= manual &value= c.Query("id") == "1234"c.Query("name") == " manual "c.Query("value") == "c.查询("wtf") == ";

func (*Context) QueryArray

func (c *Context) QueryArray(key string) (values []string)

QueryArray返回给定查询键的字符串切片 切片的长度取决于具有给定键的参数的数量

func (*Context) QueryMap

func (c *Context) QueryMap(key string) (dicts map[string]string)

QueryMap返回给定查询键的映射

func (*Context) Redirect

func (c *Context) Redirect(code int, location string)

Redirect返回到特定位置的HTTP重定向

func (*Context) RemoteIP

func (c *Context) RemoteIP() string

RemoteIP解析来自Request的IP RemoteAddr,规范化并返回IP(不带端口)

func (*Context) Render

func (c *Context) Render(code int, r render.Render)

Render写入响应头并调用Render 渲染到渲染数据

func (*Context) SSEvent

func (c *Context) SSEvent(name string, message any)

SSEvent将服务器发送的事件写入主体流

func (*Context) SaveUploadedFile

func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string) error

SaveUploadedFile上传表单文件到指定的dst

func (*Context) SecureJSON

func (c *Context) SecureJSON(code int, obj any)

SecureJSON将给定的结构作为安全JSON序列化到响应体中 Default前面加上"while(1),"如果给定的结构体是数组值,则返回响应体 它还将Content-Type设置为“application/json”

func (*Context) Set

func (c *Context) Set(key string, value any)

Set用于存储专门用于此上下文的新键/值对 如果以前没有使用c.Keys,它也会延迟初始化它

func (*Context) SetAccepted

func (c *Context) SetAccepted(formats ...string)

SetAccepted设置接受报头数据

func (*Context) SetCookie

func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)

SetCookie在ResponseWriter的报头中添加一个Set-Cookie报头 提供的cookie必须有一个有效的Name 无效的cookie可能会被静默删除

func (*Context) SetSameSite

func (c *Context) SetSameSite(samesite http.SameSite)

SetSameSite with cookie

func (*Context) ShouldBind

func (c *Context) ShouldBind(obj any) error

shoulbind检查方法和内容类型,根据“内容类型”自动选择绑定引擎 头文件使用了不同的绑定,例如:"application/json"——比;JSON绑定"application/xml"——比;如果Content-Type == "application/ JSON "使用JSON或XML作为JSON输入 它将json有效负载解码为指定为指针的结构 与c.Bind()类似,但此方法不会将响应状态码设置为400,也不会在输入无效时中止

func (*Context) ShouldBindBodyWith

func (c *Context) ShouldBindBodyWith(obj any, bb binding.BindingBody) (err error)

ShouldBindBodyWith与ShouldBindWith类似,但它将请求体存储到上下文中,并在再次调用时重用 注意:此方法在绑定前读取主体 因此,如果只需要调用一次,应该使用ShouldBindWith以获得更好的性能

func (*Context) ShouldBindHeader

func (c *Context) ShouldBindHeader(obj any) error

ShouldBindHeader是c.ShouldBindWith(obj, binding.Header)的快捷方式

func (*Context) ShouldBindJSON

func (c *Context) ShouldBindJSON(obj any) error

ShouldBindJSON是c.ShouldBindWith(obj, binding.JSON)的快捷方式

func (*Context) ShouldBindQuery

func (c *Context) ShouldBindQuery(obj any) error

ShouldBindQuery是c.ShouldBindWith(obj, binding.Query)的快捷方式

func (*Context) ShouldBindTOML

func (c *Context) ShouldBindTOML(obj any) error

ShouldBindTOML是c.ShouldBindWith(obj, binding.TOML)的快捷方式

func (*Context) ShouldBindUri

func (c *Context) ShouldBindUri(obj any) error

ShouldBindUri使用指定的绑定引擎绑定传递的结构指针

func (*Context) ShouldBindWith

func (c *Context) ShouldBindWith(obj any, b binding.Binding) error

ShouldBindWith使用指定的绑定引擎绑定传递的结构指针 参见绑定包

func (*Context) ShouldBindXML

func (c *Context) ShouldBindXML(obj any) error

ShouldBindXML是c.ShouldBindWith(obj, binding.XML)的快捷方式

func (*Context) ShouldBindYAML

func (c *Context) ShouldBindYAML(obj any) error

ShouldBindYAML是c.ShouldBindWith(obj, binding.YAML)的快捷方式

func (*Context) Status

func (c *Context) Status(code int)

状态设置HTTP响应码

func (*Context) Stream

func (c *Context) Stream(step func(w io.Writer) bool) bool

流发送一个流响应并返回一个布尔值,表示“客户端在流的中间断开了连接”;

func (*Context) String

func (c *Context) String(code int, format string, values ...any)

String将给定的字符串写入响应体

func (*Context) TOML

func (c *Context) TOML(code int, obj any)

TOML将给定的结构作为TOML序列化到响应体中

func (*Context) Value

func (c *Context) Value(key any) any

Value为key返回与此上下文关联的值,如果没有值与key关联,则返回nil 连续调用具有相同键的Value返回相同的结果

func (*Context) XML

func (c *Context) XML(code int, obj any)

XML将给定的结构作为XML序列化到响应体中 它还将Content-Type设置为“application/xml”

func (*Context) YAML

func (c *Context) YAML(code int, obj any)

YAML将给定的结构作为YAML序列化到响应体中

type Engine

type Engine struct {
	RouterGroup

	// RedirectTrailingSlash在当前路由不能匹配的情况下启用自动重定向,但是存在一个带有(不带有)尾斜杠的路径处理程序
	// 例如,如果请求/foo/,但只存在/foo的路由,则客户端被重定向到/foo, GET请求的http状态码为301,所有其他请求方法的http状态码为307
	RedirectTrailingSlash bool

	// RedirectFixedPath如果启用,如果没有为它注册句柄,路由器会尝试修复当前的请求路径
	// 首先是多余的路径元素,比如…/或被移除
	// 之后,路由器会对清理后的路径进行不区分大小写的查找
	// 如果能找到该路由的句柄,路由器就会重定向到正确的路径,GET请求的状态码为301,其他所有请求方法的状态码为307
	// 例如/FOO和/..Foo可以重定向到/ Foo
	// RedirectTrailingSlash与此选项无关
	RedirectFixedPath bool

	// handlemethodnotalallowed如果使能,如果当前请求不能被路由,则路由器检查当前路由是否允许另一个方法
	// 如果是这种情况,请求将返回“方法不允许”和HTTP状态码405
	// 如果不允许使用其他方法,则将请求委托给NotFound处理程序
	HandleMethodNotAllowed bool

	// 如果启用了ForwardedByClientIP,客户端IP将从与存储在' (*gin.Engine). remoteipheaders '匹配的请求头中解析
	// 如果没有获取到IP,则返回到从' (*gin.Context). request . remoteaddr '获取的IP
	ForwardedByClientIP bool

	// AppEngine已弃用
	// 已弃用:使用' TrustedPlatform ' WITH VALUE ' gin
	// 如果启用,它将信任一些以“X-AppEngine…”开头的标头
	// 以便与该PaaS更好地集成
	AppEngine bool

	// UseRawPath如果启用,则为url
	// RawPath将用于查找参数
	UseRawPath bool

	// UnescapePathValues如果为true,则不转义路径值
	// 如果UseRawPath为false(默认情况下),UnescapePathValues有效地为true,如url
	// 路径将被使用,它已经是未转义的
	UnescapePathValues bool

	// 即使使用额外的斜杠,也可以从URL解析RemoveExtraSlash参数
	// 见PR #1817和issue #1644
	RemoveExtraSlash bool

	// RemoteIPHeaders获取客户端IP时使用的报头列表(*gin.Engine)
	// ForwardedByClientIP '是' true '和' (*gin.Context). request
	// RemoteAddr '被' (*gin.Engine). settrustedproxies() '定义的列表的至少一个网络源匹配
	RemoteIPHeaders []string

	// TrustedPlatform设置为一个值为gin的常量
	// 例如,平台*信任由该平台设置的报头来确定客户端IP
	TrustedPlatform string

	// 给http的“maxMemory”参数的MaxMultipartMemory值请求的parsemmultipartform方法调用
	MaxMultipartMemory int64

	// 启用h2c支持
	UseH2C bool

	// 当Context.Request.Context()不是nil时,启用回退Context.Deadline()、Context.Done()、Context.Err()和Context.Value()
	ContextWithFallback bool

	HTMLRender render.HTMLRender
	FuncMap    template.FuncMap
	// contains filtered or unexported fields
}

引擎是框架的实例,它包含了复用器、中间件和配置设置 使用New()或Default()创建Engine实例

func Default

func Default() *Engine

Default返回一个Engine实例,其中已经附加了Logger和Recovery中间件

func New

func New() *Engine

New返回一个新的空白Engine实例,没有附加任何中间件 默认配置为:—RedirectTrailingSlash: true—RedirectFixedPath: false—handlemethodnotalallowed: false—ForwardedByClientIP: true—UseRawPath: false—UnescapePathValues: true

func (*Engine) Delims

func (engine *Engine) Delims(left, right string) *Engine

Delims设置模板的左和右分隔符并返回Engine实例

func (*Engine) HandleContext

func (engine *Engine) HandleContext(c *Context)

HandleContext重新进入一个已经重写的上下文 这可以通过将c.Request.URL.Path设置为新目标来实现 免责声明:你可以循环自己来处理这个问题,明智地使用

func (*Engine) Handler

func (engine *Engine) Handler() http.Handler

func (*Engine) LoadHTMLFiles

func (engine *Engine) LoadHTMLFiles(files ...string)

LoadHTMLFiles加载一段HTML文件,并将结果与HTML渲染器相关联

func (*Engine) LoadHTMLGlob

func (engine *Engine) LoadHTMLGlob(pattern string)

LoadHTMLGlob加载由glob模式标识的HTML文件,并将结果与HTML渲染器相关联

func (*Engine) NoMethod

func (engine *Engine) NoMethod(handlers ...HandlerFunc)

NoMethod设置引擎时调用的处理程序 handlemethodnotalallowed = true

func (*Engine) NoRoute

func (engine *Engine) NoRoute(handlers ...HandlerFunc)

NoRoute为NoRoute添加处理程序 默认情况下,它返回404代码

func (*Engine) Routes

func (engine *Engine) Routes() (routes RoutesInfo)

Routes返回已注册路由的切片,其中包括一些有用的信息,例如:http方法、路径和处理程序名称

func (*Engine) Run

func (engine *Engine) Run(addr ...string) (err error)

Run将路由器附加到http上 服务器并开始监听和服务HTTP请求 它是http的快捷方式 注意:除非发生错误,否则此方法将无限期地阻塞调用例程

func (*Engine) RunFd

func (engine *Engine) RunFd(fd int) (err error)

RunFd将路由器附加到http 服务器并通过指定的文件描述符开始侦听和服务HTTP请求 注意:除非发生错误,否则此方法将无限期地阻塞调用例程

func (*Engine) RunListener

func (engine *Engine) RunListener(listener net.Listener) (err error)

RunListener将路由器附加到http 服务器并开始通过指定的网络侦听和服务HTTP请求 侦听器

func (*Engine) RunTLS

func (engine *Engine) RunTLS(addr, certFile, keyFile string) (err error)

RunTLS将路由器附加到http 服务器并开始监听和服务HTTPS(安全)请求 它是http的快捷方式 注意:除非发生错误,否则此方法将无限期地阻塞调用例程

func (*Engine) RunUnix

func (engine *Engine) RunUnix(file string) (err error)

RunUnix将路由器附加到http 服务器并通过指定的unix套接字(即文件)开始侦听和服务HTTP请求 注意:除非发生错误,否则此方法将无限期地阻塞调用例程

func (*Engine) SecureJsonPrefix

func (engine *Engine) SecureJsonPrefix(prefix string) *Engine

SecureJsonPrefix设置Context.SecureJSON中使用的SecureJsonPrefix

func (*Engine) ServeHTTP

func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request)

ServeHTTP符合http 处理程序接口

func (*Engine) SetFuncMap

func (engine *Engine) SetFuncMap(funcMap template.FuncMap)

SetFuncMap设置用于template.FuncMap的FuncMap

func (*Engine) SetHTMLTemplate

func (engine *Engine) SetHTMLTemplate(templ *template.Template)

SetHTMLTemplate将模板与HTML渲染器关联

func (*Engine) SetTrustedProxies

func (engine *Engine) SetTrustedProxies(trustedProxies []string) error

SetTrustedProxies设置了一个网络起源列表(IPv4地址,IPv4 cidr, IPv6地址或IPv6 cidr),从其中信任请求的头包含替代客户端IP时' (* gin.com engine) ForwardedByClientIP '为' true ' ' TrustedProxies '功能是默认启用的,它也默认信任所有代理 如果您想禁用此功能,请使用Engine.SetTrustedProxies(nil),然后Context.ClientIP()将直接返回远程地址

func (*Engine) Use

func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes

Use将全局中间件附加到路由器上 也就是说,通过Use()附加的中间件将被包含在每个请求的处理程序链中 甚至404、405、静态文件……例如,这是日志记录器或错误管理中间件的正确位置

type Error

type Error struct {
	Err  error
	Type ErrorType
	Meta any
}

Error表示错误的说明

func (Error) Error

func (msg Error) Error() string

Error实现错误接口

func (*Error) IsType

func (msg *Error) IsType(flags ErrorType) bool

IsType判断一个错误

func (*Error) JSON

func (msg *Error) JSON() any

JSON创建一个格式正确的JSON

func (*Error) MarshalJSON

func (msg *Error) MarshalJSON() ([]byte, error)

MarshalJSON实现json Marshaller接口

func (*Error) SetMeta

func (msg *Error) SetMeta(data any) *Error

SetMeta设置错误的元数据

func (*Error) SetType

func (msg *Error) SetType(flags ErrorType) *Error

SetType设置错误的类型

func (*Error) Unwrap

func (msg *Error) Unwrap() error

Unwrap返回包装后的错误,以允许与errors.Is()、errors.As()和errors.Unwrap()互操作

type ErrorType

type ErrorType uint64

ErrorType是在gin规范中定义的无符号64位错误代码

const (
	// 当Context.Bind()失败时使用ErrorTypeBind
	ErrorTypeBind ErrorType = 1 << 63
	// 当Context.Render()失败时使用ErrorTypeRender
	ErrorTypeRender ErrorType = 1 << 62
	// ErrorTypePrivate私有错误
	ErrorTypePrivate ErrorType = 1 << 0
	// ErrorTypePublic表示公共错误
	ErrorTypePublic ErrorType = 1 << 1
	// ErrorTypeAny表示任何其他错误
	ErrorTypeAny ErrorType = 1<<64 - 1
	// ErrorTypeNu表示任何其他错误
	ErrorTypeNu = 2
)

type H

type H map[string]any

H是map[string]any的快捷方式

func (H) MarshalXML

func (h H) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML允许类型H与xml.Marshal一起使用

type HandlerFunc

type HandlerFunc func(*Context)

HandlerFunc定义了gin中间件使用的处理程序作为返回值

func BasicAuth

func BasicAuth(accounts Accounts) HandlerFunc

BasicAuth返回一个基本HTTP授权中间件 它接受一个map[string]字符串作为参数,其中键是用户名,值是密码

func BasicAuthForRealm

func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc

BasicAuthForRealm返回一个基本HTTP授权中间件 它接受一个map[string]字符串作为参数,其中键是用户名,值是密码,以及Realm的名称 如果领域为空,则“授权需要”;将默认使用 (见http://tools.ietf.org/html/rfc2617 - 1.2节)

func Bind

func Bind(val any) HandlerFunc

Bind是给定接口对象的辅助函数,并返回一个Gin中间件

func CustomRecovery

func CustomRecovery(handle RecoveryFunc) HandlerFunc

CustomRecovery返回一个中间件,它可以从任何Panic中恢复,并调用提供的handle函数来处理它

func CustomRecoveryWithWriter

func CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc

CustomRecoveryWithWriter为给定的编写器返回一个中间件,该编写器可以从任何Panic中恢复,并调用提供的handle函数来处理它

func ErrorLogger

func ErrorLogger() HandlerFunc

ErrorLogger为任何错误类型返回一个HandlerFunc

func ErrorLoggerT

func ErrorLoggerT(typ ErrorType) HandlerFunc

ErrorLoggerT返回给定错误类型的HandlerFunc

func Logger

func Logger() HandlerFunc

Logger实例化一个Logger中间件,它将把日志写入gin. defaultwwriter 缺省为gin defaultwwriter = os.Stdout

func LoggerWithConfig

func LoggerWithConfig(conf LoggerConfig) HandlerFunc

LoggerWithConfig实例是一个带有config的Logger中间件

func LoggerWithFormatter

func LoggerWithFormatter(f LogFormatter) HandlerFunc

LoggerWithFormatter实例:一个具有指定日志格式功能的Logger中间件

func LoggerWithWriter

func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc

LoggerWithWriter实例:一个具有指定写入器缓冲区的Logger中间件 例如:操作系统 标准输出,以写模式打开的文件,套接字…

func Recovery

func Recovery() HandlerFunc

Recovery返回一个中间件,它可以从任何Panic中恢复,如果有Panic,则写入500

func RecoveryWithWriter

func RecoveryWithWriter(out io.Writer, recovery ...RecoveryFunc) HandlerFunc

RecoveryWithWriter为给定的写入器返回一个中间件,该写入器可以从任何Panic中恢复并写入500(如果有的话)

func WrapF

func WrapF(f http.HandlerFunc) HandlerFunc

WrapF是用于包装http的辅助函数 HandlerFunc并返回一个Gin中间件

func WrapH

func WrapH(h http.Handler) HandlerFunc

WrapH是包装http的辅助函数 处理程序并返回一个Gin中间件

type HandlersChain

type HandlersChain []HandlerFunc

HandlersChain定义了一个handlerfuncc片

func (HandlersChain) Last

func (c HandlersChain) Last() HandlerFunc

Last返回链中的最后一个处理程序 也就是说,最后一个处理器是主处理器

type IRouter

type IRouter interface {
	IRoutes
	Group(string, ...HandlerFunc) *RouterGroup
}

IRouter定义了所有路由器句柄接口,包括单个和组路由器

type IRoutes

irroutes定义了所有路由器句柄接口

type LogFormatter

type LogFormatter func(params LogFormatterParams) string

LogFormatter给出传递给LoggerWithFormatter的formatter函数的签名

type LogFormatterParams

type LogFormatterParams struct {
	Request *http.Request

	// TimeStamp显示服务器返回响应后的时间
	TimeStamp time.Time
	// StatusCode是HTTP响应码
	StatusCode int
	// 延迟是服务器处理某个请求所需的时间
	Latency time.Duration
	// ClientIP等于Context的ClientIP方法
	ClientIP string
	// 方法是给定给请求的HTTP方法
	Method string
	// Path是客户端请求的路径
	Path string
	// 如果在处理请求时发生错误,则设置ErrorMessage
	ErrorMessage string

	// BodySize是响应体的大小
	BodySize int
	// 键是在请求的上下文中设置的键
	Keys map[string]any
	// contains filtered or unexported fields
}

LogFormatterParams是任何格式化程序在需要进行日志记录时要传递的结构

func (*LogFormatterParams) IsOutputColor

func (p *LogFormatterParams) IsOutputColor() bool

IsOutputColor是否可以输出颜色到日志中

func (*LogFormatterParams) MethodColor

func (p *LogFormatterParams) MethodColor() string

MethodColor是用于将http方法适当地记录到终端的ANSI颜色

func (*LogFormatterParams) ResetColor

func (p *LogFormatterParams) ResetColor() string

ResetColor重置所有转义属性

func (*LogFormatterParams) StatusCodeColor

func (p *LogFormatterParams) StatusCodeColor() string

StatusCodeColor是用于将http状态码适当地记录到终端的ANSI颜色

type LoggerConfig

type LoggerConfig struct {
	// 可选的
	// 默认值为gin.defaultLogFormatter
	Formatter LogFormatter

	// Output是写入日志的写入器
	// 可选的
	// 默认值为gin. defaultwwriter
	Output io.Writer

	// skipppaths是一个url路径数组,不写入日志
	// 可选的
	SkipPaths []string
}

LoggerConfig定义了Logger中间件的配置

type Negotiate

type Negotiate struct {
	Offered  []string
	HTMLName string
	HTMLData any
	JSONData any
	XMLData  any
	YAMLData any
	Data     any
	TOMLData any
}

Negotiate包含所有谈判数据

type Param

type Param struct {
	Key   string
	Value string
}

Param是一个URL参数,由一个键和一个值组成

type Params

type Params []Param

Params是一个Param-slice,由路由器返回 片是有序的,第一个URL参数也是第一个片值 因此,通过索引读取值是安全的

func (Params) ByName

func (ps Params) ByName(name string) (va string)

ByName返回与给定名称匹配的第一个参数的值 如果没有找到匹配的Param,则返回一个空字符串

func (Params) Get

func (ps Params) Get(name string) (string, bool)

Get返回与给定名称匹配的第一个Param的值和一个布尔值true 如果没有找到匹配的参数,则返回一个空字符串和一个布尔值false

type RecoveryFunc

type RecoveryFunc func(c *Context, err any)

recoveryfunction定义了CustomRecovery可传递的函数

type ResponseWriter

type ResponseWriter interface {
	http.ResponseWriter
	http.Hijacker
	http.Flusher
	http.CloseNotifier

	// Status返回当前请求的HTTP响应状态码
	Status() int

	// Size返回已经写入响应http主体的字节数
	// 看到写()
	Size() int

	// WriteString将字符串写入响应体
	WriteString(string) (int, error)

	// 如果响应体已经写好,则write返回true
	Written() bool

	// WriteHeaderNow强制写入http报头(状态码+报头)
	WriteHeaderNow()

	// push获取http
	// 用于服务器推送的push
	Pusher() http.Pusher
}

ResponseWriter……

type RouteInfo

type RouteInfo struct {
	Method      string
	Path        string
	Handler     string
	HandlerFunc HandlerFunc
}

RouteInfo表示一个请求路由的规范,它包含方法、路径和它的处理器

type RouterGroup

type RouterGroup struct {
	Handlers HandlersChain
	// contains filtered or unexported fields
}

RouterGroup在内部用于配置路由器,它与一个前缀和一组处理程序(中间件)相关联

func (*RouterGroup) Any

func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) IRoutes

Any注册了一个匹配所有HTTP方法的路由 Get, post, put, patch, head, options, delete, connect, trace

func (*RouterGroup) BasePath

func (group *RouterGroup) BasePath() string

BasePath返回路由器组的基路径 例如:v:= router.Group("/rest/n/v1/api"),则v. basepath()为"/rest/n/v1/api"

func (*RouterGroup) DELETE

func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes

DELETE是router.Handle("DELETE", path, handlers)的快捷方式

func (*RouterGroup) GET

func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes

GET是router.Handle("GET" path, handlers)的快捷方式

func (*RouterGroup) Group

func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup

Group命令用于创建新的路由器组 您应该添加所有具有相同中间件或相同路径前缀的路由 例如,可以对使用公共中间件进行授权的所有路由进行分组

func (*RouterGroup) HEAD

func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes

HEAD是router.Handle("HEAD" path, handlers)的快捷方式

func (*RouterGroup) Handle

func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) IRoutes

Handle用给定的路径和方法注册一个新的请求句柄和中间件 最后一个处理程序应该是真正的处理程序,其他的应该是中间件,可以并且应该在不同的路由之间共享 参见GitHub中的示例代码 对于GET、POST、PUT、PATCH和DELETE请求,可以使用各自的快捷函数 此功能用于批量加载,并允许使用不太常用的非标准化或自定义方法(例如用于与代理的内部通信)

func (*RouterGroup) Match

func (group *RouterGroup) Match(methods []string, relativePath string, handlers ...HandlerFunc) IRoutes

Match注册一个与你声明的指定方法匹配的路由

func (*RouterGroup) OPTIONS

func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes

OPTIONS是router.Handle("OPTIONS" path, handlers)的快捷方式

func (*RouterGroup) PATCH

func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes

PATCH是router.Handle("PATCH" path, handlers)的快捷方式

func (*RouterGroup) POST

func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes

POST是router.Handle("POST" path, handlers)的快捷方式

func (*RouterGroup) PUT

func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes

PUT是router.Handle("PUT" path, handlers)的快捷方式

func (*RouterGroup) Static

func (group *RouterGroup) Static(relativePath, root string) IRoutes

静态从给定的文件系统根目录提供文件 内部http 使用的是FileServer,因此是http 使用NotFound来代替路由器的NotFound处理程序 要使用操作系统的文件系统实现,使用:router.Static("/static", "/var/www")

func (*RouterGroup) StaticFS

func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes

StaticFS的工作原理就像' Static() ',但一个自定义的' http 可以使用FileSystem’代替 Gin默认使用:Gin . dir ()

func (*RouterGroup) StaticFile

func (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes

为了服务本地文件系统的单个文件,StaticFile注册单个路由 router.StaticFile(“favicon.ico&quot“ /资源/ favicon.ico")

func (*RouterGroup) StaticFileFS

func (group *RouterGroup) StaticFileFS(relativePath, filepath string, fs http.FileSystem) IRoutes

StaticFileFS的工作原理就像' StaticFile ',但一个自定义的' http 可以用FileSystem代替 router. staticfiles ("favicon.ico", " /resources/favicon.ico", Dir{".", false}) Gin默认使用:Gin .Dir()

func (*RouterGroup) Use

func (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes

使用将中间件添加到组中,参见GitHub中的示例代码

type RoutesInfo

type RoutesInfo []RouteInfo

RoutesInfo定义了一个RouteInfo切片

Directories

Path Synopsis
examples
gin-contrib
opengintracing
Package opengintracing provides requests tracing functional using opentracing specification.
Package opengintracing provides requests tracing functional using opentracing specification.
sse
zap
Package ginzap provides log handling using zap package.
Package ginzap provides log handling using zap package.
internal

Jump to

Keyboard shortcuts

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