# 上下文模塊
上下文模塊主要是針對 HTTP 請求中,request 和 response 的進一步封裝,他包括用戶的輸入和輸出,用戶的輸入即為 request,context 模塊中提供了 Input 對象進行解析,用戶的輸出即為 response,context 模塊中提供了 Output 對象進行輸出。
## context 對象
context 對象是對 Input 和 Output 的封裝,里面封裝了幾個方法:
- Redirect
- Abort
- WriteString
- GetCookie
- SetCookie
context 對象是 Filter 函數的參數對象,這樣你就可以通過 filter 來修改相應的數據,或者提前結束整個的執行過程。
## Input 對象
Input 對象是針對 request 的封裝,里面通過 reqeust 實現很多方便的方法,具體如下:
- Protocol
獲取用戶請求的協議,例如 `HTTP/1.0`
- Uri
用戶請求的 RequestURI,例如 `/hi?id=1001`
- Url
請求的 URL 地址,例如 `/hi`
- Site
請求的站點地址,scheme+doamin 的組合,例如 `http://beego.me`
- Scheme
請求的 scheme,例如 "http" 或者 "https"
- Domain
請求的域名,例如 `beego.me`
- Host
請求的域名,和 domain 一樣
- Method
請求的方法,標準的 HTTP 請求方法,例如 `GET`、`POST` 等
- Is
判斷是否是某一個方法,例如 `Is("GET")` 返回 true
- IsAjax
判斷是否是 AJAX 請求,如果是返回 true,不是返回 false
- IsSecure
判斷當前請求是否 HTTPS 請求,是返回 true,否返回 false
- IsWebsocket
判斷當前請求是否 Websocket 請求,如果是返回 true,否返回 false
- IsUpload
判斷當前請求是否有文件上傳,有返回 true,否返回 false
- IP
返回請求用戶的 IP,如果用戶通過代理,一層一層剝離獲取真實的 IP
- Proxy
返回用戶代理請求的所有 IP
- Refer
返回請求的 refer 信息
- SubDomains
返回請求域名的根域名,例如請求是 `blog.beego.me`,那么調用該函數返回 `beego.me`
- Port
返回請求的端口,例如返回 8080
- UserAgent
返回請求的 `UserAgent`,例如 `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36`
- Param
在路由設置的時候可以設置參數,這個是用來獲取那些參數的,例如 `Param(":id")`,返回12
- Query
該函數返回 Get 請求和 Post 請求中的所有數據,和 PHP 中 `$_REQUEST` 類似
- Header
返回相應的 header 信息,例如 `Header("Accept-Language")`,就返回請求頭中對應的信息 `zh-CN,zh;q=0.8,en;q=0.6`
- Cookie
返回請求中的 cookie 數據,例如 `Cookie("username")`,就可以獲取請求頭中攜帶的 cookie 信息中 username 對應的值
- Session
session 是用戶可以初始化的信息,默認采用了 beego 的 session 模塊中的 Session 對象,用來獲取存儲在服務器端中的數據。
- Body
返回請求 Body 中數據,例如 API 應用中,很多用戶直接發送 json 數據包,那么通過 Query 這種函數無法獲取數據,就必須通過該函數獲取數據。該函數已經 beego 1.5 版本之后刪除,目前可以通過 RequestBody 獲取數據。
- GetData
用來獲取 Input 中 Data 中的數據
- SetData
用來設置 Input 中 Data 的值,上面 GetData 和這個函數都是用來方便用戶在 Filter 中傳遞數據到 Controller 中來執行
## Output 對象
Output 是針對 Response 的封裝,里面提供了很多方便的方法:
- Header
設置輸出的 header 信息,例如 `Header("Server","beego")`
- Body
設置輸出的內容信息,例如 `Body([]byte("astaxie"))`
- Cookie
設置輸出的 cookie 信息,例如 `Cookie("sessionID","beegoSessionID")`
- Json
把 Data 格式化為 Json,然后調用 Body 輸出數據
- Jsonp
把 Data 格式化為 Jsonp,然后調用 Body 輸出數據
- Xml
把 Data 格式化為 Xml,然后調用 Body 輸出數據
- Download
把 file 路徑傳遞進來,然后輸出文件給用戶
- ContentType
設置輸出的 ContentType
- SetStatus
設置輸出的 status
- Session
設置在服務器端保存的值,例如 `Session("username","astaxie")`,這樣用戶就可以在下次使用的時候讀取
- IsCachable
根據 status 判斷,是否為緩存類的狀態
- IsEmpty
根據 status 判斷,是否為輸出內容為空的狀態
- IsOk
根據 status 判斷,是否為 200 的狀態
- IsSuccessful
根據 status 判斷,是否為正常的狀態
- IsRedirect
根據 status 判斷,是否為跳轉類的狀態
- IsForbidden
根據 status 判斷,是否為禁用類的狀態
- IsNotFound
根據 status 判斷,是否為找不到資源類的狀態
- IsClientError
根據 status 判斷,是否為請求客戶端錯誤的狀態
- IsServerError
根據 status 判斷,是否為服務器端錯誤的狀態
- beego簡介
- 為 beego 貢獻
- 發布版本
- 升級指南
- beego安裝升級
- Bee 工具的使用
- 快速入門
- 新建項目
- 路由設置
- Controller 運行機制
- model 邏輯
- view 編寫
- 靜態文件處理
- beego 的 MVC 架構介紹
- controller 設計
- 參數配置
- 路由設置
- 控制器函數
- XSRF 過濾
- 請求數據處理
- session 控制
- 過濾器
- flash 數據
- URL構建
- 多種格式數據輸出
- 表單數據驗證
- 錯誤處理
- 日志處理
- model設計
- 概述
- ORM 使用
- CRUD 操作
- 高級查詢
- 原生 SQL 查詢
- 構造查詢
- 事務處理
- 模型定義
- 命令模式
- 測試用例
- 自定義字段
- FAQ
- view 設計
- 模板語法指南
- 模板處理
- 模板函數
- 靜態文件處理
- 模板分頁處理
- beego 的模塊設計
- session 模塊
- grace 模塊
- cache 模塊
- logs 模塊
- httplib 模塊
- context 模塊
- toolbox 模塊
- config 模塊
- i18n 模塊
- beego 高級編程
- 進程內監控
- API 自動化文檔
- 應用部署
- 獨立部署
- supervisor 部署
- Nginx 部署
- apache 部署
- beego 第三方庫
- 應用例子
- 在線聊天室
- 短域名服務
- Todo 列表
- beego實用庫
- 驗證碼
- 分頁
- FAQ