2017-09-21 14 views
0

私は以下のコードを使用してURLにいくつかのJSONデータを投稿しています。私はHTMLページを取得しています。Node.js HTML応答本体

var request = require('request'); 
request.post({ 
    url: "URL OF A WEBSITE", 
    headers: { 
     "Content-Type": "application/json" 
    }, 
    body: { 
     my_json_obj 
    }, 
    json:true 
}, function(error, response, body){ 
    console.log(error); 
    console.log(JSON.stringify(response)); 
    console.log(body); 
}); 

このコードは、私がbodyタグでHTMLページを取得しています正常に動作します。 そのHTMLページをブラウザに読み込みたいとします。どうすればいいですか、これは非常に基本的な質問ですが、node.jsの誰かに助けてください。

+0

あなた'LL Expressまたはnode.jsの組み込みサーバーライブラリーを使用してそのコンテンツを提供する必要があります。今、あなたがしているのはそれを取り出すことだけです。 – zero298

+0

@ zero298そういう意味では、node.jsなどのサーバーを作成する必要がありますか? 例があるリンクを共有することができれば役に立ちます。ありがとう。 – Syn3sthete

+0

ノードのドキュメントでは、httpサーバーの作成方法の例を示します。https://nodejs.org/docs/latest-v4.x/api/http.html#http_class_http_clientrequest –

答えて

0

Express "Hello World" exampleに従って、ルートハンドラでリクエストの呼び出しを使用します。サーバーを作成する独自の方法を持っていますが、簡潔にするために及び容易に私はちょうどExpressを使用することをお勧めし

/*jslint node:true, esversion:6*/ 

"use strict"; 

const request = require("request"), 
    express = require("express"), 
    app = express(); 

let my_json_obj = {}, 
    URL_OF_WEBSITE = "http://www.google.com"; 

app.get("/", function (req, res) { 
    request.post({ 
     url: URL_OF_WEBSITE, 
     headers: { 
      "Content-Type": "application/json" 
     }, 
     body: { 
      my_json_obj 
     }, 
     json: true 
    }, function (error, response, body) { 
     if (error) { 
      console.log(error); 
      return res.sendStatus(404); 
     } 
     console.log(JSON.stringify(response)); 
     console.log(body); 
     res.send(body); 
    }); 
}); 

app.listen(3000, function() { 
    console.log("Example app listening on port 3000!"); 
}); 

のNode.js 。

+0

res.send(body);この行はbroswerのhtmlを読み込みますが、cssはそのWebページのために読み込まれません。 これはなぜ起こっているのですか? – Syn3sthete

+0

@ Syn3stheteブラウザのデバッグツールを開きます。何かエラーがありますか?同じドメインのCSSですか?おそらくそうではありません。 Webサイトをプロキシしようとしている場合は、プロキシモジュールを使用してください。 – zero298

+0

はい、あなたは正しいです、URLは私のlocalhostですが、CSSの参照エラーは、サードパーティのウェブサイトのURLを示しています。上記のコードにプロキシモジュールを追加するにはどうすればよいですか? 編集することは可能ですか? – Syn3sthete

0

Express jsを使用していますか? Node jsアプリケーションで作業すると、作業が楽になります。 Expressのルーティングに

ルック: https://medium.com/javascript-scene/introduction-to-node-express-90c431f9e6fd

あなたはコマンドを使用して、端末にExpressの定型を作成することができます。

express yourappname 

あなたはその後、急行内のHTML/CSS/JSファイルを置くことができますあなたが生成したばかりの-app-> 'public'フォルダ。その後

あなたのような何かをすることによって、あなたのapp.js内部のルートを作成します。

// exampledomain.com/ 
// Loading the file index.html when user navigates to '/' 
app.get('/', function(req, res){ 

    res.sendFile(path.join(__dirname + '/public/index.html')); 

}); 

// or 

// exampledomain.com/getFileURL 
// POST request (from your ajax) to '/getFileURL' 
// which will then load the about.html file into the browser 
app.post('/getFileURL', function(req, res){ 

    // Do more JSON/data handling & Node js stuff here then 
    // send something back 

    res.sendFile(path.join(__dirname + '/public/about.html')); 

}); 

ありExpressのJSとのより多くの便利な機能をしているが、私はルーティングがあなたが今必要なものだと思います。

p.s.ノードJSで作業するときに見て非常に便利なツール:

  • ポストマン(テストAJAX /表現/ Nodejsルートと応答)
  • Nodemon(保存時に自動的にNodejsサーバの起動)
関連する問題