物件HttpServer
HttpServer 是內建物件之一,它是用來建立HTTP 伺服器的物件。一個HttpServer 物件包含兩個必傳的參數:連接埠和事件處理介面物件。在事件處理介面物件中,具體的實作方式可以是簡單的回呼函數,也可以使用複雜的路由、鍊式處理數組等方式
http伺服器對像是將TcpServer和HttpHandler組合封裝的對象,方便快速建置伺服器,邏輯相當於:
1
2
3var svr = new net.TcpServer(addr, port, new http.Handler(function(req) {
...
}));
下面是一個最簡單的HttpServer 的應用範例,它只是對所有請求,回傳字串hello world。
1
2
3
4
5const http = require('http');
var svr = new http.Server(8080, (req) => {
req.response.write('hello, world');
});
svr.start();
從程式碼中可以看到,首先,我們導入了內建的http模組。然後我們建立了一個新的HttpServer 對象,並且傳入了兩個必要參數:一個是連接埠號,另一個是特定的事件處理介面對象。在這個例子中,我們使用了一個簡單的回呼函數作為事件處理接口,用來回應來自HTTP 請求的資料。其中req.response.write('hello, world')
用於將我們的字串hello world 回應到客戶端。
在完成了HttpServer 物件的建立之後,使用svr.start()
來啟動伺服器,這樣我們就能透過這個伺服器接收來自Internet 的HTTP 請求了。
繼承關係
建構函數
HttpServer
HttpServer 建構函數,在所有本機位址偵聽
1
2new HttpServer(Integer port,
Handler hdlr);
呼叫參數:
- port: Integer, 指定http伺服器偵聽連接埠
- hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見mq.Handler
HttpServer 建構函數
1
2
3new HttpServer(String addr,
Integer port,
Handler hdlr);
呼叫參數:
- addr: String, 指定http伺服器偵聽位址,為"" 則在本機所有位址偵聽
- port: Integer, 指定http伺服器偵聽連接埠
- hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見mq.Handler
HttpServer 建構函數
1
2new HttpServer(String addr,
Handler hdlr);
呼叫參數:
- addr: String, 指定http伺服器偵聽位址,為"" 則在本機所有位址偵聽
- hdlr:Handler,http內建訊息處理器,處理函數,鍊式處理數組,路由對象,詳見mq.Handler
成員屬性
maxHeadersCount
Integer, 查詢並設定最大請求頭個數,缺省為128
1Integer HttpServer.maxHeadersCount;
maxHeaderSize
Integer, 查詢並設定最大請求頭長度,預設為8192
1Integer HttpServer.maxHeaderSize;
maxBodySize
Integer, 查詢並設定body 最大尺寸,以MB 為單位,預設為64
1Integer HttpServer.maxBodySize;
enableEncoding
Boolean, 自動解壓縮功能開關,預設為關閉
1Boolean HttpServer.enableEncoding;
serverName
String, 查詢設定伺服器名稱,預設為:fibjs/0.x.0
1String HttpServer.serverName;
socket
1readonly Socket HttpServer.socket;
handler
Handler, 伺服器目前事件處理介面對象
1Handler HttpServer.handler;
成員函數
enableCrossOrigin
允許跨域請求
1HttpServer.enableCrossOrigin(String allowHeaders = "Content-Type");
呼叫參數:
- allowHeaders: String, 指定接受的http頭字段
start
啟動目前伺服器
1HttpServer.start();
stop
關閉socket中止正在運作的伺服器
1HttpServer.stop() async;
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String HttpServer.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value HttpServer.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值