举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > goframe session GoFrame 数据返回-缓冲控制

goframe session GoFrame 数据返回-缓冲控制

2023-03-21 10:31 GoFrame教程

goframe session GoFrame 数据返回-缓冲控制

goframe session

GoFrame 是一个开源的 Go 语言 Web 框架,它提供了一系列的功能,包括 session 管理。Session 管理是一种机制,用于在多个请求之间保存和共享数据。GoFrame 中的 session 管理可以帮助开发者快速实现用户身份验证、购物车功能、会话状态等功能。

GoFrame 中的 session 管理使用 cookie 和服务器端存储来实现。当用户首次访问应用时,服务器会生成一个唯一的 session ID,并将其作为 cookie 发送到浏览器。当用户再次访问应用时,浏览器会将这个 cookie 发送回服务器,服务器就可以根据这个 session ID 来识别用户。

GoFrame 中的 session 管理还可以使用不同的存储后端来保存数据,如内存、文件、Redis 等。开发者可以根据实际情况选择合适的存储后端来保存数据。此外,GoFrame 还允许开发者使用不同的加密方法来保证数据安全性。

// 获取session对象
session := this.GetSession()
// 获取session中key为name的value
name := session.Get("name") 
// 设置session中key为name, value为goframe的键值对 
session.Set("name", "goframe")

GoFrame 数据返回-缓冲控制

Response​输出采用了缓冲控制,输出的内容预先写入到一块缓冲区,等待服务方法执行完毕后才真正地输出到客户端。该特性在提高执行效率同时为输出内容的控制提供了更高的灵活性。

相关方法:

func (r *Response) Buffer() []byte
func (r *Response) BufferLength() int
func (r *Response) BufferString() string
func (r *Response) Flush()
func (r *Response) SetBuffer(data []byte)

其中​Output​作用类似于​Flush​将缓冲区的数据输出到客户端并清空缓冲区。

举个例子:

我们通过后置中间件统一对返回的数据做处理,如果服务方法产生了异常,那么不能将敏感错误信息推送到客户端,而统一设置错误提示信息。

package main

import (
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
	"net/http"
)

func MiddlewareErrorHandler(r *ghttp.Request) {
	r.Middleware.Next()
	if r.Response.Status >= http.StatusInternalServerError {
		r.Response.ClearBuffer()
		r.Response.Writeln("服务器居然开小差了,请稍后再试吧!")
	}
}

func main() {
	s := g.Server()
	s.Group("/api.v2", func(group *ghttp.RouterGroup) {
		group.Middleware(MiddlewareErrorHandler)
		group.ALL("/user/list", func(r *ghttp.Request) {
			panic("db error: sql is xxxxxxx")
		})
	})
	s.SetPort(8199)
	s.Run()
}

访问 http://127.0.0.1:8199/api.v2/user/list 可以看到,页面输出了:

服务器居然开小差了,请稍后再试吧!


阅读全文
以上是鳄鱼CMS为你收集整理的goframe session GoFrame 数据返回-缓冲控制全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们