当前位置: 首页 > news >正文

自己做网站 教程wordpress取消自适应

自己做网站 教程,wordpress取消自适应,wordpress使用对象存储,京东下载官网在web应用服务中#xff0c;完整的业务处理在技术上包含客户端操作#xff0c;服务端处理#xff0c;返回处理结果给客户端三个步骤。但是在在更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证#xff0c;权限管理#xff0c;安全检查#xff0c;日志记录等多维…        在web应用服务中完整的业务处理在技术上包含客户端操作服务端处理返回处理结果给客户端三个步骤。但是在在更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证权限管理安全检查日志记录等多维的系统支持。 鉴权认证权限管理安全检查日志记录等这些保障和支持系统业务属于全系统的业务和具有的系统业务没有关联对于系统中的所有业务都适用。 我们可以将上述描述所涉及的通用业务单独抽离并进行开发然后以插件化的形式进行对接这样既保证了功能的完整又有效的将具体业务和系统功能进行解耦还可以达到灵活配置的作用。 这种通用业务独立开发并灵活配置使用的组件一般称为中间件。因为其位于服务器和实际业务处理程序之间。其含义在于在请求和具体业务逻辑之间增加某些操作。 一. 中间件定义 在gin中中间件称为middleware中间件的类型定义如下 // HandlerFunc defines the handler used by gin middleware as return value. type HandlerFunc func(*Context) HandlerFunc是一个函数类型接收一个Context参数函数由于编写中间件的处理逻辑。 type HandlerFunc func(*Context)其实就是代表一个中间件。 二. 中间件Use用法 在gin中中间件的全局注册使用的是gin.Engine的Use方法。 通常我们使用gin.Default()方法来创建一个gin.Engine对象该函数默认注册了Logger(), Recovery()两个中间件。 // Default returns an Engine instance with the Logger and Recovery middleware already attached. func Default(opts ...OptionFunc) *Engine {debugPrintWARNINGDefault()engine : New()engine.Use(Logger(), Recovery())return engine.With(opts...) }// Logger instances a Logger middleware that will write the logs to gin.DefaultWriter. // By default, gin.DefaultWriter os.Stdout. func Logger() HandlerFunc {return LoggerWithConfig(LoggerConfig{}) }// Recovery returns a middleware that recovers from any panics and writes a 500 if there was one. func Recovery() HandlerFunc {return RecoveryWithWriter(DefaultErrorWriter) } 如果不想使用默认中间件可以使用gin.New()方法返回一个不带中间件的gin.Engine对象。  gin.Engine的Use方法接收一个可变参数可以按照自定义多个中间件传入参数类型为HandlerFunc即中间件类型。 // Use attaches a global middleware to the router. i.e. the middleware attached through Use() will be // included in the handlers chain for every single request. Even 404, 405, static files... // For example, this is the right place for a logger or error management middleware. func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes {engine.RouterGroup.Use(middleware...)engine.rebuild404Handlers()engine.rebuild405Handlers()return engine } 三. 全局中间件 所有请求都经过此中间件 package mainimport (fmtnet/httptimegithub.com/gin-gonic/gin )// 定义中间件 func MiddleWare() gin.HandlerFunc {return func(c *gin.Context) {t : time.Now()fmt.Println(中间件开始执行)//设置变量到Context的key中可以通过Get获取c.Set(request, 中间件)status : c.Writer.Status()fmt.Println(中间件执行完毕 , status)t2 : time.Since(t)fmt.Println(time:, t2)} }func main() {r : gin.Default()//注册中间件r.Use(MiddleWare())r.GET(/ce1, func(c *gin.Context) {//取值req, _ : c.Get(request)fmt.Println(ce1 req: , req)c.JSON(http.StatusOK, gin.H{message1: ce1 ok})})r.GET(/ce2, func(c *gin.Context) {//取值req, _ : c.Get(request)fmt.Println(ce2 req: , req)c.JSON(http.StatusOK, gin.H{message2: ce2 ok})})r.Run() } 输出结果 四. 局部中间件 只有注册了中间件的路由才会执行中间件 package mainimport (fmtnet/httptimegithub.com/gin-gonic/gin )// 定义中间件 func MiddleWare() gin.HandlerFunc {return func(c *gin.Context) {t : time.Now()fmt.Println(中间件开始执行)//设置变量到Context的key中可以通过Get获取c.Set(request, 中间件)status : c.Writer.Status()fmt.Println(中间件执行完毕 , status)t2 : time.Since(t)fmt.Println(time:, t2)} }func main() {r : gin.Default()//给/ce1路由注册中间件r.GET(/ce1, MiddleWare(), func(c *gin.Context) {//取值req, _ : c.Get(request)fmt.Println(ce1 req: , req)c.JSON(http.StatusOK, gin.H{message1: ce1 ok})})r.GET(/ce2, func(c *gin.Context) {//取值req, _ : c.Get(request)fmt.Println(ce2 req: , req)c.JSON(http.StatusOK, gin.H{message2: ce2 ok})})r.Run() } 五. 流程控制 gin.Context中有一些方法可以控制中间件的执行流程。 c.Next(): 调用该函数会将控制权交给下一个中间件函数如果没有下一个中间件函数则将控制权交给处理请求的路由处理函数 c.Abort(): 调用该函数会立即终止当前中间件函数的执行并且不会再调用后续的中间件函数或路由处理函数c.AbortWithStatus(code int): 调用该函数会终止当前中间件函数的执行并返回指定的HTTP状态码给客户端c.NextWithError(): 调用该函数会将控制权交给下一个中间件函数同时传递一个错误给下一个中间件函数或路由处理函数c.IsAborted(): 该函数用于判断当前请求是否已经被终止返回一个布尔值表示请求是否已经被终止 一个使用Next方法的简单例子 c.Next()的作用是先调用下一个函数下一个函数执行完之后再回头执行中间件后面的语句。 内置中间件 Gin框架也内置一些中间件可以直接使用 func BasicAuth(accounts Accounts) HandlerFunc func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc func Bind(val interface{}) HandlerFunc func ErrorLogger() HandlerFunc func ErrorLoggerT(typ ErrorType) HandlerFunc func Logger() HandlerFunc func LoggerWithConfig(conf LoggerConfig) HandlerFunc func LoggerWithFormatter(f LogFormatter) HandlerFunc func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc func Recovery() HandlerFunc func RecoveryWithWriter(out io.Writer) HandlerFunc func WrapF(f http.HandlerFunc) HandlerFunc func WrapH(h http.Handler) HandlerFunc
http://www.hkea.cn/news/14429668/

相关文章:

  • 淄博网站建设讲解透彻网站域名选择的原则
  • 网站建设属于哪个经营范围阿里云做网站怎么挣钱
  • 网站建设配置网站程序开发要点
  • 网站有信心做的更好wordpress图形验证码
  • 企业网站的推广阶段做网站关键字
  • 淄博专业网站设计做网站如何团队分工
  • 网站开发数据库技术做网站要求什么软件
  • 高端网站开放阿里云虚拟主机做多个网站
  • 儿童个人网站源码hhvm wordpress 空白
  • 代刷网站app制作教程新闻 近期大事件
  • 网上找兼职的网站七牛备份wordpress
  • 做技术网站赚钱吗浙江网站开发工程师
  • 有什么平台做网站比较好软文营销的写作技巧有哪些
  • 网站底部怎么做需要放些什么ui怎样做网站
  • 响应式网站建设品牌全网天下北京市建设集团有限公司
  • 网站建设三个阶段十大互联网平台
  • 80s网站建设工作室wordpress 关键词获取
  • 网站开发项目的里程碑wordpress mysql8.0
  • 电子商务网站的后台管理系统wordpress滑动登录
  • 网站的维护工作内容一元购网站怎么做
  • 做qq头像的网站销售公司简介模板
  • 内蒙古建设安全监督网站不记得在哪里做的网站备案
  • 国外网站导航电子商务视觉设计
  • 网站建设中iis新乡电子商务网站建设
  • 网站建设初验申请表软件开发合同范本免费
  • 菜鸟网站编程微信彩票网站网站建设
  • 长春网站建设于健wordpress建立目录权限
  • 济南智能网站建设报价做网站 广告费 步骤
  • seo网站外链平台应用市场app下载安装到手机
  • 设计高端网站哪家好国家企业信用信息系统(河南)