物件HttpResponse
HttpResponse 是HTTP 回應對象,使用HttpRequest.response物件完成Http 服務端資料回應,或http.request請求返回伺服器的回應數據
以下的例子顯示如何在http.Server中使用,範例程式碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14const http = require('http');
const server = new http.Server(8080, (request) => {
// retreive the response object
const response = request.response;
// set the status code
response.statusCode = 200;
// set the content type to text/plain
response.setHeader('Content-Type', 'text/plain');
// write the response body
response.write('ok');
});
server.start();
繼承關係
建構函數
HttpResponse
HttpResponse 建構函數,建立一個新的HttpResponse 物件
1new HttpResponse();
常量
TEXT
指定訊息類型1,代表一個文字類型
1const HttpResponse.TEXT = 1;
BINARY
指定訊息類型2,代表一個二進位類型
1const HttpResponse.BINARY = 2;
成員屬性
statusCode
Integer, 查詢和設定回應訊息的回傳狀態
1Integer HttpResponse.statusCode;
statusMessage
String, 查詢並設定回應訊息的回傳訊息
1String HttpResponse.statusMessage;
status
Integer, 查詢和設定回應訊息的回傳狀態,等同於statusCode
1Integer HttpResponse.status;
ok
Boolean, 查詢目前回應是否正常
1readonly Boolean HttpResponse.ok;
cookies
NArray, 傳回目前訊息的HttpCookie物件列表
1readonly NArray HttpResponse.cookies;
protocol
String, 協定版本訊息,允許的格式為:HTTP/#.#
1String HttpResponse.protocol;
headers
HttpCollection, 包含訊息中http訊息頭的容器,唯讀屬性
1readonly HttpCollection HttpResponse.headers;
keepAlive
Boolean, 查詢和設定是否保持連接
1Boolean HttpResponse.keepAlive;
upgrade
Boolean, 查詢和設定是否為升級協議
1Boolean HttpResponse.upgrade;
maxHeadersCount
Integer, 查詢並設定最大請求頭個數,缺省為128
1Integer HttpResponse.maxHeadersCount;
maxHeaderSize
Integer, 查詢並設定最大請求頭長度,預設為8192
1Integer HttpResponse.maxHeaderSize;
maxBodySize
Integer, 查詢並設定body 最大尺寸,以MB 為單位,預設為64
1Integer HttpResponse.maxBodySize;
socket
Stream, 查詢目前物件的來源socket
1readonly Stream HttpResponse.socket;
value
String, 訊息的基本內容
1String HttpResponse.value;
params
NArray, 訊息的基本參數
1readonly NArray HttpResponse.params;
type
Integer, 訊息類型
1Integer HttpResponse.type;
data
Value, 查詢訊息的數據,此屬性會根據content-type 傳回不同數據,當text 時,傳回文本,為json時返回json,其它時候返回二進制
1readonly Value HttpResponse.data;
body
SeekableStream, 包含訊息資料部分的流對象
1SeekableStream HttpResponse.body;
length
Long, 訊息資料部分的長度
1readonly Long HttpResponse.length;
stream
Stream, 查詢訊息readFrom 時的流對象
1readonly Stream HttpResponse.stream;
lastError
String, 查詢與設定訊息處理的最後錯誤
1String HttpResponse.lastError;
成員函數
writeHead
設定回應訊息的返回狀態,返回訊息,並新增回應頭
1
2
3HttpResponse.writeHead(Integer statusCode,
String statusMessage,
Object headers = {});
呼叫參數:
- statusCode: Integer, 指定回應訊息的回傳狀態
- statusMessage: String, 指定回應訊息的回傳訊息
- headers: Object, 指定回應訊息新增的回應頭
設定回應訊息的返回狀態,返回訊息,並新增回應頭
1
2HttpResponse.writeHead(Integer statusCode,
Object headers = {});
呼叫參數:
- statusCode: Integer, 指定回應訊息的回傳狀態
- headers: Object, 指定回應訊息新增的回應頭
addCookie
在cookies 中新增一個HttpCookie物件
1HttpResponse.addCookie(HttpCookie cookie);
呼叫參數:
- cookie:HttpCookie, 指定要新增的HttpCookie物件
redirect
發送重定向到客戶端
1HttpResponse.redirect(String url);
呼叫參數:
- url: String, 重定向的位址
發送重定向到客戶端
1
2HttpResponse.redirect(Integer statusCode,
String url);
呼叫參數:
- statusCode: Integer, 指定回應訊息的回傳狀態,接受的狀態為:301, 302, 307
- url: String, 重定向的位址
sendHeader
僅發送格式化http頭到給定的流對象
1HttpResponse.sendHeader(Stream stm) async;
呼叫參數:
- stm:Stream, 指定接收格式化訊息的流對象
hasHeader
檢查是否存在指定鍵值的訊息頭
1Boolean HttpResponse.hasHeader(String name);
呼叫參數:
- name: String, 指定要檢查的鍵值
回傳結果:
- Boolean, 返回鍵值是否存在
firstHeader
查詢指定鍵值的第一個訊息頭
1String HttpResponse.firstHeader(String name);
呼叫參數:
- name: String, 指定要查詢的鍵值
回傳結果:
- String, 傳回鍵值所對應的值,若不存在,則傳回undefined
allHeader
查詢指定鍵值的全部訊息頭
1NObject HttpResponse.allHeader(String name = "");
呼叫參數:
- name: String, 指定要查詢的鍵值,傳遞空字串傳回全部鍵值的結果
回傳結果:
- NObject, 傳回鍵值所對應全部值的數組,若資料不存在,則傳回null
addHeader
新增一個訊息頭,新增資料並不修改已存在的鍵值的訊息頭
1HttpResponse.addHeader(Object map);
呼叫參數:
- map: Object, 指定要新增的鍵值資料字典
新增指定名稱的一組訊息頭,新增資料並不會修改已存在的鍵值的訊息頭
1
2HttpResponse.addHeader(String name,
Array values);
呼叫參數:
- name: String, 指定要新增的鍵值
- values: Array, 指定要新增的一組數據
新增一個訊息頭,新增資料並不修改已存在的鍵值的訊息頭
1
2HttpResponse.addHeader(String name,
String value);
呼叫參數:
- name: String, 指定要新增的鍵值
- value: String, 指定要新增的數據
setHeader
設定一個訊息頭,設定資料將修改鍵值所對應的第一個數值,並清除相同鍵值的其餘訊息頭
1HttpResponse.setHeader(Object map);
呼叫參數:
- map: Object, 指定要設定的鍵值資料字典
設定指定名稱的一組訊息頭,設定資料將修改鍵值所對應的數值,並清除相同鍵值的其餘訊息頭
1
2HttpResponse.setHeader(String name,
Array values);
呼叫參數:
- name: String, 指定要設定的鍵值
- values: Array, 指定要設定的一組數據
設定一個訊息頭,設定資料將修改鍵值所對應的第一個數值,並清除相同鍵值的其餘訊息頭
1
2HttpResponse.setHeader(String name,
String value);
呼叫參數:
- name: String, 指定要設定的鍵值
- value: String, 指定要設定的數據
removeHeader
刪除指定鍵值的全部訊息頭
1HttpResponse.removeHeader(String name);
呼叫參數:
- name: String, 指定要刪除的鍵值
read
從流內讀取指定大小的數據,此方法為body 對應方法的別名
1Buffer HttpResponse.read(Integer bytes = -1) async;
呼叫參數:
- bytes: Integer, 指定要讀取的資料量,預設為讀取隨機大小的資料區塊,讀取的資料尺寸取決於設備
回傳結果:
- Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null
readAll
從流內讀取剩餘的全部數據,此方法為body 對應方法的別名
1Buffer HttpResponse.readAll() async;
回傳結果:
- Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null
write
寫入給定的數據,此方法為body 對應方法的別名
1HttpResponse.write(Buffer data) async;
呼叫參數:
- data:Buffer, 給定要寫入的數據
json
以JSON 編碼寫入給定的數據
1Value HttpResponse.json(Value data);
呼叫參數:
- data: Value, 給定要寫入的數據
回傳結果:
- Value, 此方法不會傳回數據
以JSON 編碼解析訊息中的數據
1Value HttpResponse.json();
回傳結果:
- Value, 回傳解析的結果
pack
以msgpack編碼寫入給定的數據
1Value HttpResponse.pack(Value data);
呼叫參數:
- data: Value, 給定要寫入的數據
回傳結果:
- Value, 此方法不會傳回數據
以msgpack編碼解析訊息中的數據
1Value HttpResponse.pack();
回傳結果:
- Value, 回傳解析的結果
end
設定當前訊息處理結束,Chain處理器不再繼續後面的事務
1HttpResponse.end();
isEnded
查詢目前訊息是否結束
1Boolean HttpResponse.isEnded();
回傳結果:
- Boolean, 結束則回傳true
clear
清除訊息的內容
1HttpResponse.clear();
sendTo
發送格式化訊息到給定的流對象
1HttpResponse.sendTo(Stream stm) async;
呼叫參數:
- stm:Stream, 指定接收格式化訊息的流對象
readFrom
從給定的快取流對象讀取格式化訊息,並解析填充對象
1HttpResponse.readFrom(Stream stm) async;
呼叫參數:
- stm:Stream, 指定讀取格式化訊息的流對象
toString
傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現
1String HttpResponse.toString();
回傳結果:
- String, 傳回物件的字串表示
toJSON
傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合
1Value HttpResponse.toJSON(String key = "");
呼叫參數:
- key: String, 未使用
回傳結果:
- Value, 傳回包含可JSON 序列化的值