中间件

作者: 寒云暮雨 | 来源:发表于2019-10-17 17:09 被阅读0次

1、不使用默认的中间件

/*
@Author :   寒云
@Email  :   1355081829@qq.com
@Time : 2019/10/15 11:51
*/
package main

import (
    "github.com/gin-gonic/gin"
    "log"
    "net/http"
    "time"
)

func main() {
    r := gin.New()
    r.Use(gin.Logger())
    _ = r.Run(":8089")
}

不使用默认的中间件

    r := gin.New()

添加一个中间件


    r.Use(gin.Logger())

2、使用默认的中间件
···
// Default 使用 Logger 和 Recovery 中间件
r := gin.Default()
···

3、在中间件中使用 Goroutine

/*
@Author :   寒云
@Email  :   1355081829@qq.com
@Time : 2019/10/15 11:51
*/
package main

import (
    "github.com/gin-gonic/gin"
    "log"
    "net/http"
    "time"
)

func main() {
    r := gin.New()
    r.Use(gin.Logger())
    r.GET("/long_async", func(c *gin.Context) {
        // 创建在 goroutine 中使用的副本
        cCp := c.Copy()
        go func() {
            // 用 time.Sleep() 模拟一个长任务。
            time.Sleep(5 * time.Second)

            // 请注意您使用的是复制的上下文 "cCp",这一点很重要
            log.Println("Done! in path " + cCp.Request.URL.Path)
        }()
        c.JSON(http.StatusOK, gin.H{"name": "hanyun"})
    })

    _ = r.Run(":8089")
}


我们访问http://127.0.0.1:8089/long_async之后结果立马返回,我们打印的日志等待5秒后输出
敲黑板,下面一定要记着,在携程里使用中间件 一定 cCp := c.Copy() ,如下示例

    r.GET("/long_async", func(c *gin.Context) {
        // 创建在 goroutine 中使用的副本
        cCp := c.Copy()
        go func() {
            // 用 time.Sleep() 模拟一个长任务。
            time.Sleep(5 * time.Second)

            // 请注意您使用的是复制的上下文 "cCp",这一点很重要
            log.Println("Done! in path " + cCp.Request.URL.Path)
        }()
    })

相关文章

  • 翻译

    Laravel 的路由中间件 简介 创建中间件 注册中间件全局中间件为路由指定中间件中间件组 中间件参数 Term...

  • 中间件学习——具体分类

    中间件分为远程过程调用中间件、数据访问中间件、消息中间件、事务(交易)处理中间件、分布式对象中间件。 远程过程调用...

  • nodejs19-express中间件

    中间件 匹配路由之前和之后做的操作 应用级中间件 路由级中间件 错误处理中间件 内置中间件 第三方中间件 应用级中...

  • 4.3KOA 中间件模块化与中间件合成

    中间件模块化与中间件合成 一、中间件模块化 定义中间件模块 使用中间件模块 二、使用 koa-compose 模块...

  • 4.2KOA 中间件执行流程

    中间件执行流程 代码执行流程 中间件 1 开始执行中间件 2 开始执行执行内容中间件 2 结束执行中间件 1 结束...

  • 13.中间件和上下文处理器

    中间件 中间件的引入image.png django中的中间件django 中的中间件(middleware),在...

  • Express学习

    使用中间件 Express 应用可使用如下几种中间件:* 应用级中间件* 路由级中间件* 错误处理中间...

  • Express 中间件

    中间件的概念 什么是中间件 中间件(Middleware),特指业务流程的中间处理环节。 Express 中间件的...

  • Scrapy爬虫框架(七) ------ 下载中间件(Midd

    1. Spider 下载中间件(Middleware) Spider 中间件(Middleware) 下载器中间件...

  • laravel api设置Accept 头

    一、创建中间件设置Accept 头 生成中间件 设置Accept头 将中间件添加到api中间件组中

网友评论

    本文标题:中间件

    本文链接:https://www.haomeiwen.com/subject/bwdvmctx.html