Phantomjs-web-server-module-methods

提供:Dev Guides
移動先:案内検索

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 - http://localhost:" + server.port);
console.log(server.port);
server.close();
console.log(server.port);

上記のプログラムは、次の output を生成します。

server started - http://localhost:8080
8080

ここでは、サーバーを閉じた後、 server.port をコンソール化しました。 したがって、ウェブサーバーは既に閉じられているため、応答しません。

聴く

*server.listen* メソッドは、2つの引数を持つポートおよびコールバック関数を受け取ります。これは、 *Request Object* および *Response Object* です。
  • リクエストオブジェクト*には、次のプロパティが含まれています-
  • メソッド-これはメソッドGET/POSTを定義します。
  • URL -要求されたURLを表示します。
  • httpVersion -これは実際のhttpバージョンを表示します。
  • ヘッダー-これは、キーと値のペアを持つすべてのヘッダーを表示します。
  • Post -postメソッドにのみ適用可能なリクエストボディ。
  • postRaw -Content-Typeヘッダーが 'application/x-www-formurlencoded’に設定されている場合、投稿の元のコンテンツはこの追加プロパティ(postRaw)に保存され、その投稿はURLで自動的に更新されますデータのデコードされたバージョン。
  • レスポンスオブジェクト*には、次のプロパティが含まれています-
  • Headers -キーと値のペアとしてすべてのHTTPヘッダーがあります。 初めてwriteを呼び出す前に設定する必要があります。
  • SetHeader -これは特定のヘッダーを設定します。
  • * Header(name)*-指定されたヘッダーの値を返します。
  • StatusCode -返されたHTTPステータスコードを設定します。
  • * SetEncoding(エンコード)*-これは、write()に渡されたデータを変換するために使用されます。 デフォルトでは、データはUTF-8に変換されます。 データがバイナリ文字列の場合、「バイナリ」を示します。 データがバッファの場合は不要です(例: 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 = "http://localhost:" + 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();
});

上記のプログラムは、次の output を生成します。

sending request to :http://localhost: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>