基本介绍

HTTP Server 的数据返回通过 ghttp.Response 对象实现, ghttp.Response 对象实现了标准库的 http.ResponseWriter 接口。数据输出使用 Write* 相关方法实现,并且数据输出采用了 Buffer 机制,因此数据的处理效率比较高。任何时候可以通过 OutputBuffer 方法输出缓冲区数据到客户端,并清空缓冲区数据。

常用方法:更详细的接口列表请参考 https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#Response

  1. func (r *Response) Write(content ...interface{})
  2. func (r *Response) WriteExit(content ...interface{})
  3. func (r *Response) WriteJson(content interface{}) error
  4. func (r *Response) WriteJsonExit(content interface{}) error
  5. func (r *Response) WriteJsonP(content interface{}) error
  6. func (r *Response) WriteJsonPExit(content interface{}) error
  7. func (r *Response) WriteOver(content ...interface{})
  8. func (r *Response) WriteOverExit(content ...interface{})
  9. func (r *Response) WriteStatus(status int, content ...interface{})
  10. func (r *Response) WriteStatusExit(status int, content ...interface{})
  11. func (r *Response) WriteTpl(tpl string, params ...gview.Params) error
  12. func (r *Response) WriteTplContent(content string, params ...gview.Params) error
  13. func (r *Response) WriteTplDefault(params ...gview.Params) error
  14. func (r *Response) WriteXml(content interface{}, rootTag ...string) error
  15. func (r *Response) WriteXmlExit(content interface{}, rootTag ...string) error
  16. func (r *Response) Writef(format string, params ...interface{})
  17. func (r *Response) WritefExit(format string, params ...interface{})
  18. func (r *Response) Writefln(format string, params ...interface{})
  19. func (r *Response) WriteflnExit(format string, params ...interface{})
  20. func (r *Response) Writeln(content ...interface{})
  21. func (r *Response) WritelnExit(content ...interface{})

简要说明:

  1. Write* 方法用于往返回的数据缓冲区追加写入数据,参数可为任意的数据格式,内部通过断言对参数做自动分析。
  2. Write*Exit 方法用于往返回的数据缓冲区追加写入数据后退出当前执行的 HTTP Handler 方法,可用于替代 return 返回方法。
  3. WriteOver* 方法用于覆盖缓冲区写入,原有缓冲区的数据将会被覆盖为新写入的数据。
  4. WriteStatus* 方法用于设置当前请求执行返回的状态码。
  5. WriteJson*/ WriteXml 方法用于特定数据格式的输出,这是为开发者提供的简便方法。
  6. WriteTpl* 方法用于模板输出,解析并输出模板文件,也可以直接解析并输出给定的模板内容。
  7. 其他方法详见接口文档;

此外,需要提一下, Header 的操作可以通过标准库的方法来实现,例如:

  1. Response.Header().Set("Content-Type", "text/plain; charset=utf-8")

相关文档

📄️ 数据返回-缓冲控制在GoFrame框架中如何实现数据返回的缓冲控制。通过使用缓冲区可以提高执行效率并提供更灵活的输出控制。示例代码展示了如何通过中间件统一处理返回数据,避免错误信息直接暴露给客户端,并提供自定义的错误信息提示。

📄️ 数据返回-JSON/XML使用GoFrame框架的Response对象实现数据返回功能,支持JSON和XML格式输出。通过WriteJson、WriteXml等方法,可以轻松实现内容输出。示例代码展示了如何使用GoFrame构建HTTP服务器,并提供支持JSONP协议的实现方式。

📄️ 数据返回-Redirect在GoFrame框架中使用RedirectTo和RedirectBack方法实现页面跳转功能。通过Location Header实现页面之间的跳转,包括跳转到指定地址和返回到上一页面。本示例演示了如何在本地服务中设置页面重定向,帮助开发者理解HTTP地址处理及Referer Header的应用。

📄️ 数据返回-Exit控制GoFrame框架中的数据返回控制方法,包括Exit、ExitAll和ExitHook。Exit用于退出当前执行的逻辑方法,而ExitAll会强行中断当前执行流程,非常适用于权限控制。ExitHook用于当路由匹配到多个HOOK方法时,控制其执行顺序。这些方法在服务函数和HOOK事件回调函数中有效,并通过极少的运行时开销来提高易用性。

📄️ 数据返回-文件下载在使用GoFrame框架构建的应用程序中通过Response对象实现文件下载功能。通过ServeFile方法可以展示文件内容,而通过ServeFileDownload方法则可以引导客户端下载指定路径的文件,充分利用流式下载技术以减少内存占用,提升性能。

📄️ 数据返回-模板解析在GoFrame框架中使用Response方法进行模板解析和数据返回的操作,包括WriteTpl和ParseTpl等方法。通过这些方法,可以将模板文件或内容进行解析并输出,同时支持使用内置变量如Config、Cookie、Session等,提供了灵活的模版操作方式。同时,包含详细的使用示例代码,帮助您更好地理解和应用。

📄️ 数据返回-Stream返回使用GoFrame框架实现HTTP流式数据返回,适用于框架版本小于v2.4及以上的版本。通过简化的代码实现高效的流式数据传输,适用于需要长连接和持续数据更新的场景,并提供注意事项和相关资料的参考。