[TOC]
# 上下文模塊
上下文模塊主要是針對 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 這種函數無法獲取數據,就必須通過該函數獲取數據。
- 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 判斷,是否為服務器端錯誤的狀態
- 寫在前面的話
- 第0章 beego 簡介
- 0.1 為beego貢獻
- 0.2 發布版本
- 0.3 升級指南
- 第1章 安裝升級
- 1.1 bee工具的使用
- 第2章 快速入門
- 2.1 新建項目
- 2.2 路由設置
- 2.3 Controller運行機制
- 2.4 Model邏輯
- 2.5 View編寫
- 2.6 靜態文件處理
- 第3章 beego的MVC架構
- 3.1 Model設計
- 3.1.1 概述
- 3.1.2 ORM使用
- 3.1.3 CRUD操作
- 3.1.4 高級查詢
- 3.1.5 原生SQL查詢
- 3.1.6 構造查詢
- 3.1.7 事物處理
- 3.1.8 模型定義
- 3.1.9 命令模式
- 3.1.10 測試用例
- 3.1.11 自定義字段
- 3.1.12 FAQ
- 3.2 View設計
- 3.2.1 模板語法指南
- 3.2.2 模板處理
- 3.2.3 模板函數
- 3.2.4 靜態文件處理
- 3.2.5 模板分頁處理
- 3.3 Controller設計
- 3.3.1 參數配置
- 3.3.2 路由設置
- 3.3.3 控制器函數
- 3.3.4 XSRF過濾
- 3.3.5 請求數據處理
- 3.3.6 session 控制
- 3.3.7 過濾器
- 3.3.8 flash 數據
- 3.3.9 URL構建
- 3.3.10 多種格式數據輸出
- 3.3.11 表單數據驗證
- 3.3.12 錯誤處理
- 3.3.13 日志處理
- 第4章 beego的模塊設計
- 4.1 session 模塊
- 4.2 grace 模塊
- 4.3 cache 模塊
- 4.4 logs 模塊
- 4.5 httplib 模塊
- 4.6 context 模塊
- 4.7 toolbox 模塊
- 4.8 config 模塊
- 4.9 i18n 模塊
- 第5章 beego高級編程
- 5.1 進程內監控
- 5.2 API自動化文檔
- 第6章 應用部署
- 6.1 獨立部署
- 6.2 Supervisor部署
- 6.3 Nginx 部署
- 6.4 Apache 部署
- 第7章 第三方庫
- 第8章 應用例子
- 8.1 在線聊天室
- 8.2 短域名服務
- 8.3 Todo列表
- 第9章 FAQ