程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> mochiweb參數化模型Req相關功能

mochiweb參數化模型Req相關功能

編輯:PHP基礎知識
 

本文的筆記講述如何從client請求中獲取各種參數,如method, request path, headers, cookie等。

Mochiweb是Erlang實現的一個開源Web服務器,它設計的一個亮點就是他本身的Http請求的參數化模型。因此我們可以用OO的方式來理解它的相關用法。
它的實現在mochiweb_request模塊.在mochiweb中,每個client請求其構造一個 Req 對象(注:這個“對象“只是便於理解的提法), Req 可以理解成 mochiweb_request 的一個參數化或實例化.

1.Req:get(method) -> ‘OPTIONS’ | ‘GET’ | ‘HEAD’ | ‘POST’ | ‘PUT’ | ‘DELETE’ | ‘TRACE’.
獲取Http請求的方式.

2.Req:get(raw_path) -> String().
獲取raw_path.比如 http://www.nextim.cn/session/login?username=test#p,那/session/login?username=test#p就是這個raw_path.

3.Req:get(path) -> String().
獲取path.比如 http://www.nextim.cn/session/login?username=test#p,那/session/login就是這個raw_path.

4.Req:parse_qs() -> [{strng(), string()}].
獲取get參數.比如 http://www.nextim.cn/session/login?username=test#p,則返回[{“username”,”test”}].

5.Req:parse_post() -> [{strng(), string()}].
確保post數據類型為: application/x-www-form-urlencoded, 否則不要調用(其內部會調用Req:recv_body),返回值類似Req:parse_qs().

6.Req:get(peer) -> string().
返回值為client的ip

7.Req:get_header_value(Key) -> undefined | string().
獲取某個header,比如Key為”User-Agent”時,返回”Mozila…….”

8.Req:get_primary_header_value(Key) -> undefined | string().
獲取http headers中某個key對應的主值(value以分號分割).
舉例: 假設 Content-Type 為 application/x-www-form-urlencoded; charset=utf8,則
Req:get_header_value(“content-type”) 返回 application/x-www-form-urlencoded

9.Req:get(headers) -> dict().
獲取所有headers
說明: 返回結果為stdlib/dict 數據結構,可以通過mochiweb_headers模塊進行操作.
舉例: 下面代碼顯示請求中所有headers:
Headers = Req:get(headers),
lists:foreach(fun(Key, Value) ->
io:format(“~p : ~p ~n”, [Key, Value])
end,
mochiweb_headers:to_list(Headers)).

10.Req:parse_cookie() -> [{string(), string()}].
解析Cookie

11.Req:get_cookie_value(Key) -> string().
類似Req:get_header_value(Key)

最近搜了下,發現用mochiweb的挺多的。但自己用的時候發現來不少疑難。以上文檔皆由litaocheng總結提供。感謝所帶來的幫助。希望這個對國內使用mochiweb的朋友們帶來幫助  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved