Object 內建對象

物件HttpResponse

HttpResponse 是HTTP 回應對象,使用HttpRequest.response物件完成Http 服務端資料回應,或http.request請求返回伺服器的回應數據

以下的例子顯示如何在http.Server中使用,範例程式碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
const 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 物件

1
new HttpResponse();

常量

TEXT

指定訊息類型1,代表一個文字類型

1
const HttpResponse.TEXT = 1;

BINARY

指定訊息類型2,代表一個二進位類型

1
const HttpResponse.BINARY = 2;

成員屬性

statusCode

Integer, 查詢和設定回應訊息的回傳狀態

1
Integer HttpResponse.statusCode;

statusMessage

String, 查詢並設定回應訊息的回傳訊息

1
String HttpResponse.statusMessage;

status

Integer, 查詢和設定回應訊息的回傳狀態,等同於statusCode

1
Integer HttpResponse.status;

ok

Boolean, 查詢目前回應是否正常

1
readonly Boolean HttpResponse.ok;

cookies

NArray, 傳回目前訊息的HttpCookie物件列表

1
readonly NArray HttpResponse.cookies;

protocol

String, 協定版本訊息,允許的格式為:HTTP/#.#

1
String HttpResponse.protocol;

headers

HttpCollection, 包含訊息中http訊息頭的容器,唯讀屬性

1
readonly HttpCollection HttpResponse.headers;

keepAlive

Boolean, 查詢和設定是否保持連接

1
Boolean HttpResponse.keepAlive;

upgrade

Boolean, 查詢和設定是否為升級協議

1
Boolean HttpResponse.upgrade;

maxHeadersCount

Integer, 查詢並設定最大請求頭個數,缺省為128

1
Integer HttpResponse.maxHeadersCount;

maxHeaderSize

Integer, 查詢並設定最大請求頭長度,預設為8192

1
Integer HttpResponse.maxHeaderSize;

maxBodySize

Integer, 查詢並設定body 最大尺寸,以MB 為單位,預設為64

1
Integer HttpResponse.maxBodySize;

socket

Stream, 查詢目前物件的來源socket

1
readonly Stream HttpResponse.socket;

value

String, 訊息的基本內容

1
String HttpResponse.value;

params

NArray, 訊息的基本參數

1
readonly NArray HttpResponse.params;

type

Integer, 訊息類型

1
Integer HttpResponse.type;

data

Value, 查詢訊息的數據,此屬性會根據content-type 傳回不同數據,當text 時,傳回文本,為json時返回json,其它時候返回二進制

1
readonly Value HttpResponse.data;

body

SeekableStream, 包含訊息資料部分的流對象

1
SeekableStream HttpResponse.body;

length

Long, 訊息資料部分的長度

1
readonly Long HttpResponse.length;

stream

Stream, 查詢訊息readFrom 時的流對象

1
readonly Stream HttpResponse.stream;

lastError

String, 查詢與設定訊息處理的最後錯誤

1
String HttpResponse.lastError;

成員函數

writeHead

設定回應訊息的返回狀態,返回訊息,並新增回應頭

1 2 3
HttpResponse.writeHead(Integer statusCode, String statusMessage, Object headers = {});

呼叫參數:

  • statusCode: Integer, 指定回應訊息的回傳狀態
  • statusMessage: String, 指定回應訊息的回傳訊息
  • headers: Object, 指定回應訊息新增的回應頭

設定回應訊息的返回狀態,返回訊息,並新增回應頭

1 2
HttpResponse.writeHead(Integer statusCode, Object headers = {});

呼叫參數:

  • statusCode: Integer, 指定回應訊息的回傳狀態
  • headers: Object, 指定回應訊息新增的回應頭

addCookie

在cookies 中新增一個HttpCookie物件

1
HttpResponse.addCookie(HttpCookie cookie);

呼叫參數:


redirect

發送重定向到客戶端

1
HttpResponse.redirect(String url);

呼叫參數:

  • url: String, 重定向的位址

發送重定向到客戶端

1 2
HttpResponse.redirect(Integer statusCode, String url);

呼叫參數:

  • statusCode: Integer, 指定回應訊息的回傳狀態,接受的狀態為:301, 302, 307
  • url: String, 重定向的位址

sendHeader

僅發送格式化http頭到給定的流對象

1
HttpResponse.sendHeader(Stream stm) async;

呼叫參數:

  • stm:Stream, 指定接收格式化訊息的流對象

hasHeader

檢查是否存在指定鍵值的訊息頭

1
Boolean HttpResponse.hasHeader(String name);

呼叫參數:

  • name: String, 指定要檢查的鍵值

回傳結果:

  • Boolean, 返回鍵值是否存在

firstHeader

查詢指定鍵值的第一個訊息頭

1
String HttpResponse.firstHeader(String name);

呼叫參數:

  • name: String, 指定要查詢的鍵值

回傳結果:

  • String, 傳回鍵值所對應的值,若不存在,則傳回undefined

allHeader

查詢指定鍵值的全部訊息頭

1
NObject HttpResponse.allHeader(String name = "");

呼叫參數:

  • name: String, 指定要查詢的鍵值,傳遞空字串傳回全部鍵值的結果

回傳結果:

  • NObject, 傳回鍵值所對應全部值的數組,若資料不存在,則傳回null

addHeader

新增一個訊息頭,新增資料並不修改已存在的鍵值的訊息頭

1
HttpResponse.addHeader(Object map);

呼叫參數:

  • map: Object, 指定要新增的鍵值資料字典

新增指定名稱的一組訊息頭,新增資料並不會修改已存在的鍵值的訊息頭

1 2
HttpResponse.addHeader(String name, Array values);

呼叫參數:

  • name: String, 指定要新增的鍵值
  • values: Array, 指定要新增的一組數據

新增一個訊息頭,新增資料並不修改已存在的鍵值的訊息頭

1 2
HttpResponse.addHeader(String name, String value);

呼叫參數:

  • name: String, 指定要新增的鍵值
  • value: String, 指定要新增的數據

setHeader

設定一個訊息頭,設定資料將修改鍵值所對應的第一個數值,並清除相同鍵值的其餘訊息頭

1
HttpResponse.setHeader(Object map);

呼叫參數:

  • map: Object, 指定要設定的鍵值資料字典

設定指定名稱的一組訊息頭,設定資料將修改鍵值所對應的數值,並清除相同鍵值的其餘訊息頭

1 2
HttpResponse.setHeader(String name, Array values);

呼叫參數:

  • name: String, 指定要設定的鍵值
  • values: Array, 指定要設定的一組數據

設定一個訊息頭,設定資料將修改鍵值所對應的第一個數值,並清除相同鍵值的其餘訊息頭

1 2
HttpResponse.setHeader(String name, String value);

呼叫參數:

  • name: String, 指定要設定的鍵值
  • value: String, 指定要設定的數據

removeHeader

刪除指定鍵值的全部訊息頭

1
HttpResponse.removeHeader(String name);

呼叫參數:

  • name: String, 指定要刪除的鍵值

read

從流內讀取指定大小的數據,此方法為body 對應方法的別名

1
Buffer HttpResponse.read(Integer bytes = -1) async;

呼叫參數:

  • bytes: Integer, 指定要讀取的資料量,預設為讀取隨機大小的資料區塊,讀取的資料尺寸取決於設備

回傳結果:

  • Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null

readAll

從流內讀取剩餘的全部數據,此方法為body 對應方法的別名

1
Buffer HttpResponse.readAll() async;

回傳結果:

  • Buffer, 傳回從流內讀取的數據,若無數據可讀,或連線中斷,則傳回null

write

寫入給定的數據,此方法為body 對應方法的別名

1
HttpResponse.write(Buffer data) async;

呼叫參數:

  • data:Buffer, 給定要寫入的數據

json

以JSON 編碼寫入給定的數據

1
Value HttpResponse.json(Value data);

呼叫參數:

  • data: Value, 給定要寫入的數據

回傳結果:

  • Value, 此方法不會傳回數據

以JSON 編碼解析訊息中的數據

1
Value HttpResponse.json();

回傳結果:

  • Value, 回傳解析的結果

pack

msgpack編碼寫入給定的數據

1
Value HttpResponse.pack(Value data);

呼叫參數:

  • data: Value, 給定要寫入的數據

回傳結果:

  • Value, 此方法不會傳回數據

msgpack編碼解析訊息中的數據

1
Value HttpResponse.pack();

回傳結果:

  • Value, 回傳解析的結果

end

設定當前訊息處理結束,Chain處理器不再繼續後面的事務

1
HttpResponse.end();

isEnded

查詢目前訊息是否結束

1
Boolean HttpResponse.isEnded();

回傳結果:

  • Boolean, 結束則回傳true

clear

清除訊息的內容

1
HttpResponse.clear();

sendTo

發送格式化訊息到給定的流對象

1
HttpResponse.sendTo(Stream stm) async;

呼叫參數:

  • stm:Stream, 指定接收格式化訊息的流對象

readFrom

從給定的快取流對象讀取格式化訊息,並解析填充對象

1
HttpResponse.readFrom(Stream stm) async;

呼叫參數:

  • stm:Stream, 指定讀取格式化訊息的流對象

toString

傳回物件的字串表示,一般回傳"[Native Object]",物件可以根據自己的特性重新實現

1
String HttpResponse.toString();

回傳結果:

  • String, 傳回物件的字串表示

toJSON

傳回物件的JSON 格式表示,一般傳回物件定義的可讀屬性集合

1
Value HttpResponse.toJSON(String key = "");

呼叫參數:

  • key: String, 未使用

回傳結果:

  • Value, 傳回包含可JSON 序列化的值