- 檔案系統模組
- PhantomJS - 屬性
- PhantomJS - 方法
- 系統模組
- PhantomJS - 屬性
- Web 伺服器模組
- PhantomJS - 屬性
- PhantomJS - 方法
- 其他
- 命令列介面
- PhantomJS - 螢幕截圖
- PhantomJS - 頁面自動化
- PhantomJS - 網路監控
- PhantomJS - 測試
- PhantomJS - REPL
- PhantomJS - 示例
- PhantomJS 有用資源
- PhantomJS - 快速指南
- PhantomJS - 有用資源
- PhantomJS - 討論
PhantomJS - Web 伺服器模組方法
在本章中,我們將討論 PhantomJS Web 伺服器模組的各種方法。
關閉
close 方法用於關閉 Web 伺服器。
語法
其語法如下所示:
var server = require('webserver').create();
server.close();
示例
以下示例演示瞭如何使用 close 方法。
var webserver = require('webserver');
var server = webserver.create();
var service = server.listen(8080,function(request,response){
});
if(service) console.log("server started - https://:" + server.port);
console.log(server.port);
server.close();
console.log(server.port);
以上程式生成以下輸出。
server started - https://:8080 8080
在這裡,我們在關閉伺服器後控制檯輸出了server.port。因此,它不會響應,因為 Web 伺服器已關閉。
監聽
server.listen 方法接受埠和回撥函式,回撥函式帶有兩個引數:請求物件和響應物件。
請求物件包含以下屬性:
Method - 定義 GET/POST 方法。
URL - 顯示請求的 URL。
httpVersion - 顯示實際的 http 版本。
Headers - 顯示所有帶有鍵值對的標頭。
Post - 僅適用於 post 方法的請求正文。
postRaw - 如果 Content-Type 標頭設定為 'application/x-www-formurlencoded',則 post 的原始內容將儲存在此額外屬性 (postRaw) 中,然後該 post 將自動更新為資料的 URL 解碼版本。
響應物件包含以下屬性:
Headers - 具有所有 HTTP 標頭作為鍵值對。它應該在第一次呼叫 write 之前設定。
SetHeader - 設定特定標頭。
Header (name) - 返回給定標頭的值。
StatusCode - 設定返回的 HTTP 狀態程式碼。
SetEncoding (encoding) - 用於轉換傳遞給 write() 的資料。預設情況下,資料將轉換為 UTF-8。如果資料是二進位制字串,則指示“binary”。如果資料是 Buffer(例如來自 page.renderBuffer),則不需要。
Write (data) - 傳送響應正文的資料。可以多次呼叫。
WriteHead (statusCode, headers) - 向請求傳送響應標頭。狀態程式碼是 3 位 HTTP 狀態程式碼(例如 404)。最後一個引數和標頭是響應標頭。
Close - 關閉 http 連線。
CloseGracefully - 類似於 close(),但它確保首先發送響應標頭。
語法
其語法如下所示:
var server = require('webserver').create();
var listening = server.listen(8080, function (request, response) {}
示例
讓我們舉個例子來了解 listen 方法是如何工作的。
var page = require('webpage').create();
var server = require('webserver').create();
var port = 8080;
var listening = server.listen(8080, function (request, response) {
console.log("GOT HTTP REQUEST");
console.log(JSON.stringify(request, null, 4));
// we set the headers here
response.statusCode = 200;
response.headers = {"Cache": "no-cache", "Content-Type": "text/html"};
// the headers above will now be sent implictly
// now we write the body
response.write("<html><head><title>Welcone to Phantomjs</title></head>");
response.write("<body><p>Hello World</p></body></html>");
response.close();
});
if (!listening) {
console.log("could not create web server listening on port " + port);
phantom.exit();
}
var url = "https://:" + port + "/foo/response.php";
console.log("sending request to :" +url);
page.open(url, function (status) {
if (status !== 'success') {
console.log('page not opening');
} else {
console.log("Getting response from the server:");
console.log(page.content);
}
phantom.exit();
});
以上程式生成以下輸出。
sending request to :https://:8080/foo/response.php
GOT HTTP REQUEST {
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-IN,*",
"Connection": "Keep-Alive",
"Host": "localhost:8080",
"User-Agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/538.1
(KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
},
"httpVersion": "1.1",
"method": "GET",
"url": "/foo/response.php"
}
Getting response from the server:
<html><head><title>Welcone to Phantomjs</title></head><body><p>Hello World</p></body>
</html>