> 本章介紹處理完http請求后如何響應請求,Gin框架支持以字符串、json、xml、文件等格式響應請求
[TOC]
## 以字符串方式響應請求
> 函數定義:
> `func (c *Context) String(code int, format string, values ...interface{})`
~~~
func DoHandler(c *gin.Context) {
// 例子1:
c.String(200, "歡迎訪問www.tizi360.com!")
// 例子2: 這里定義了兩個字符串參數(兩個%s),后面傳入的兩個字符串參數將會替換對應的%s
c.String(200,"歡迎訪問%s, 你是%s", "www.tizi360.com!","最靚的仔!")
}
~~~
## 以json格式響應請求
~~~
// User 定義
type User struct {
// 通過json標簽定義struct字段轉換成json字段的名字
Name string `json:"name"`
Email string `json:"email"`
}
// Handler 控制器
func DoHandler(c *gin.Context) {
//初始化user對象
u := &User{
Name: "tizi365",
Email: "tizi@tizi365.com",
}
//返回json數據
//返回結果:{"name":"tizi365", "email":"tizi@tizi365.com"}
c.JSON(200, u)
//c.JSON(200, gin.H{"name": "tizi360","email": "tizi@tizi365.com"})
}
~~~
## 以xml格式響應請求
~~~
// User 定義
type User struct {
// 通過xml標簽定義struct字段轉換成xml字段的名字
Name string `xml:"name"`
Email string `xml:"email"`
}
// Handler 控制器
func DoHandler(c *gin.Context) {
//初始化user對象
u := &User{
Name: "tizi365",
Email: "tizi@tizi365.com",
}
//返回json數據
//返回結果:
// <?xml version="1.0" encoding="UTF-8"?>
// <User><name>tizi365</name><email>tizi@tizi365.com</email></User>
c.XML(200, u)
//c.XML(200, gin.H{"name": "tizi360","email": "tizi@tizi365.com"})
}
~~~
## 以文件格式響應請求
**例子1:**
> 直接在瀏覽器上返回該文件,如果是圖片、word文檔、pdf等則直接顯示,其他則為下載
~~~
func DoHandler(c *gin.Context) {
//通過File函數,直接返回本地文件,參數為本地文件地址。
//函數說明:c.File("文件路徑")
c.File("E:\\2.png")
}
~~~
**例子2:**
> 提供用戶下載的方式
~~~
func DoHandler(c *gin.Context) {
//通過FileAttachment函數,返回本地文件,類似File函數,區別是可以指定下載的文件名。
//函數說明: c.FileAttachment("文件路徑", "下載的文件名")
c.FileAttachment("E:\\2.png", "download.jpg")
}
~~~
## 設置http響應頭(設置Header)
~~~
func DoHandler(c *gin.Context) {
//設置http響應 header, key/value方式,支持設置多個header
c.Header("name","wk123")
}
~~~
- 基礎知識
- 開發環境
- 包名規則
- 包初始化 (init)
- 基礎數據類型
- 基礎類型轉換
- 格式化輸出
- go指針
- 流程控制語句
- 函數定義
- 匿名函數
- 數組和切片
- map集合
- 結構體
- Interface接口
- 日期處理
- 數學計算
- 正則表達式
- 協程 (并發處理)
- channel
- waitgroup
- mutex (鎖機制)
- websocket
- protobuf
- Redis
- 錯誤處理
- 打包程序
- NSQ消息隊列
- 單元測試
- beego
- 安裝入門
- Gin
- 快速入門
- 路由與控制器
- 處理請求參數
- 表單驗證
- 處理響應結果
- 渲染HTML模版
- 訪問靜態文件
- Gin中間件
- Cookie處理
- Session處理
- Gin上傳文件
- swagger
- pprof性能測試
- GORM
- 入門教程
- 模型定義
- 數據庫連接
- 插入數據
- 查詢數據
- 更新數據
- 刪除數據
- 事務處理
- 關聯查詢
- 屬于 (BELONG TO)
- 一對一 (Has One)
- 一對多 (Has Many)
- 多對多 (Many to Many)
- 預加載 (Preloading)
- 錯誤處理
- 第三方常用插件
- viper 讀取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷鍵