標準庫包含一個非常有用的類 neko.Web ,提供靜態方法的形式處理web服務器相關問題的功能。這個類簡化了對復雜內容的處理,比如請求/響應頭,從客戶端請求的參數的檢索,等等。
下面列出 neko.Web 提供的靜態方法:
|neko.Web 靜態方法|描述|
| -- | -- |
|cacheModule(f:Void->Void):Void|設置主要的入口函數用來處理請求。設置為 null 則禁用代碼緩存。|
|flush():Void|刷新發送到客戶端的數據。在Apache上,默認輸出數據將被緩沖,所以這可以用于顯示一些長時間的操作過程。|
|getAuthorization():{user:String, pass:String}|返回一個對象,包括基本的客戶端發送的方案授權|
|getClientHeader():List<{header:String,value:String}>|從客戶端的請求中獲得客戶端頭文件的值|
|getClientIp():String|返回發送請求的客戶端的IP地址|
|getCookies():Map<String,String>|返回一個map,包含所有的客戶端發送的cookies。要設置一個新的cookie,不要改變這個map,使用 setCookie() 方法。|
| getCwd():String | 返回本地文件系統中的當前工作目錄 |
| getHostName():String | 返回本地主機的服務名稱 。|
| getMethod():String | 返回客戶端使用的HTTP方法,這個API需要Neko 1.7.1+. 。|
| getMultipart(maxSize:Int):Map< String,String > |返回map中的POST數據,傳遞到map的數據不能超過 maxSize值否則拋出異常。|
|getParams():StringMap<String>|返回包含GET和POST數據的Map對象|
|getParamsString():String|返回GET參數的字符串格式,和在URL中出現的形式一樣|
|getParamValues(param:String):Array<String>|GET和POST中的參數的值可以被表示為一個數組;這個函數允許返回整個Array通過名稱選擇的參數。參數必須用以下的形式:p1[]=abc&p1[]123 。返回的參數的數組,參數p1包括兩個字符串元素 “abc” 和 “123” 。|
|getPostData():String|和getParamString()相同,但是是返回 POST數據。注意,字符串長度限制為256KB,除非請求編碼是multipart/form數據;這種情況下,使用 getMultipart() 或者 parseMultipart() 來接收POST值。|
|getURI():String|從原始請求返回URI|
|logMessage(msg:String):Void|寫入信息到一個服務器日志文件,這個API需要Neko 1.7.1 +|
|parseMultipart(onPart:String->String->Void, onData:Bytes->Int->Int->Void):Void|解析多部件的POST請求數據。傳遞的函數 onPart() 在一個新的部件帶有部件名和文件名作為參數被發現時調用。參數函數 onData()在一些數據作為第一個傳遞的參數,流中的位置作為第二個參數,它的長度作為第三個參數的數據被接收到時調用。這個方法通常用來存儲接收的上傳操作到服務器磁盤時使用。|
|redirect(url:String):String|重定向請求到傳遞的URL,使用header的Location。|
|setCookie(k:String, v:String?expire:Date,?domain:String,?path:String,?secure:Bool,?httpOnly:Bool):Void|通過傳遞的鍵和值設置新的cookie 。同樣的限制性解釋應用在 setHeader() 方法,在這里也適用。|
|setHeader(h:String, v:String):Void|添加鍵值對的頭文件信息。如果一些內容已經被打印輸出,方法被調用會引發一個異常。|
|setReturnCode(r:Int):Void|設置HTTP返回碼。同樣的限制性解釋關于 setHeader() 方法,也在這里適用|
這個類還提供一個靜態變量 isModNeko:Bool ,表示是否背后的web服務器是Apache(并使用mod_neko庫)或者不是。
另外,還有一個 isTora靜態變量,是否使用了Tora擴展。
特別注意一點,getCwd() 方法,因為它是一個經常引起混亂的主題。首先,這個方法返回一個本地文件系統的路徑而不是任何的網絡URI。其次,也是最重要的,路徑是絕對路徑,表示neko模塊被激活的目錄位置。如果你使用 NekoTools服務器,就是命令執行的目錄;如果你使用 mod_neko模塊,那么它是web服務器配置的基礎目錄;當然在很多情況下,兩者可能是重合的。
- 本書目錄
- 第一章:Haxe介紹
- 互聯網開發的一個問題
- Haxe是什么,為什么產生
- Haxe編譯工具
- Haxe語言
- Haxe如何工作
- 那么Neko是什么
- Haxe和Neko的必須條件
- 本章摘要
- 第二章:安裝、使用Haxe和Neko
- 安裝Haxe
- 使用Haxe安裝程序
- 在Windows上手動安裝Haxe
- Linux上手動安裝Haxe
- 安裝Neko
- Windows上手動安裝Neko
- 在Linux上安裝Neko
- Hello world! 一式三份
- 編譯你的第一個Haxe應用
- 你的程序如何編譯
- HXML編譯文件
- 編譯到Neko
- 編譯為JavaScript
- 程序結構
- 編譯工具開關
- 本章摘要
- 第三章:基礎知識學習
- Haxe層級結構
- 標準數據類型
- 變量
- 類型推斷
- 常數變量
- 簡單的值類型
- 浮點類型
- 整型
- 選擇數值類型
- 布爾類型
- 字符串類型
- 抽象類型
- Void 和 Null
- 動態類型
- unknown類型
- 使用untyped繞過靜態類型
- 注釋代碼
- 轉換數據類型
- Haxe數組
- Array
- List
- Map
- Haxe中使用日期時間
- 創建一個時間對象
- Date組件
- DateTools類
- 操作數據
- 操作符
- Math類
- 使用String函數
- 本章摘要
- 第四章:信息流控制
- 數據存放之外
- 條件語句
- if語句
- switch語句
- 從條件語句返回值
- 循環
- while循環
- for循環
- 循環集合
- Break和Continue
- 函數
- 類的函數
- 局部函數
- Lambda類
- 本章摘要
- 第五章:深入面向對象編程
- 類和對象
- 實例字段
- 靜態字段
- 理解繼承
- Super
- 函數重載
- 構造器重載
- toString()
- 抽象類和抽象方法
- 靜態字段,實例變量和繼承
- 繼承規則
- 使用接口
- 高級類和對象特性
- 類的實現
- 類型參數
- 匿名對象
- 實現動態
- Typedef
- 擴展
- 枚舉
- 構造器參數
- 本章摘要
- 第六章:組織你的代碼
- 編寫可重用代碼
- 使用包
- 聲明一個包
- 隱式導入
- 顯式導入
- 枚舉和包
- 類型查找順序
- 導入一個完整的包
- 導入庫
- Haxe標準庫
- Haxelib庫
- 其他項目中的庫
- 外部庫
- 使用資源
- 文檔化代碼
- 離線文檔
- 在線文檔
- 單元測試
- haxe.unit包
- 編寫測試
- 本章摘要
- 第七章:錯誤調試
- trace函數
- trace輸出
- haxe的trace和ActionScript的trace
- 異常
- 異常處理
- CallStack和ExceptionStack
- 異常管理類
- 創建完全的異常處理類
- 異常類代碼
- 本章摘要
- 第八章:跨平臺工具
- XML
- XML剖析
- Haxe XML API
- 正則表達式
- EReg類
- 模式
- 定時器
- 延遲動作
- 隊列動作
- MD5
- 本章摘要
- 第九章:使用Haxe構建網站
- Web開發介紹
- Web 服務器
- 使用Web服務器發布內容
- HTML速成課程
- Haxe和HTML的區別
- NekoTools Web Server
- Apache安裝mod_neko
- Windows安裝Apache和mod_neko
- Linux安裝Apache和Mod_Neko
- 第一個Haxe網站
- 使用Neko作為網頁Controller
- neko.Web類
- Neko作為前端控制器
- 本章摘要
- 第十章:使用模板進行分離式設計
- 什么是模板
- Template類
- Template語法
- 使用資產
- 何時在模板中使用代碼
- 服務器端模板的Templo
- 安裝Templo
- 使用Templo
- haxe.Template和mtwin.Templo表達式上的區別
- Attr表達式
- Raw表達式
- 邏輯表達式
- 循環表達式
- set, fill, 和 use表達式
- Templo中使用宏
- 手動編譯模版
- 第十一章:執行服務端技巧
- 第十二章:使用Flash構建交互內容
- 第十三章:使用IDE
- 第十四章:通過JavaScript制作更多交互內容
- 第十五章:通過Haxe遠程通信連接所學
- 第十六章:Haxe高級話題
- 第十七章:Neko開發桌面應用
- 第十八章:用SWHX開發桌面Flash
- 第十九章:多媒體和Neko
- 第二十章:使用C/C++擴展Haxe
- 附加部分