この記事では主に、node.js http モジュールの詳細な理解を紹介し、参考にしていきます。
http モジュールは主に HTTP サーバーとクライアントを構築するために使用されます。HTTP サーバーまたはクライアント機能を使用するには http モジュールを呼び出す必要があります。
サーバーを作成する
var http = require(“http”);var url = require(“url”);//创建服务器//http继承自tcpvar server = http.createServer(function (req,res) { var urlstr = req.url;//获取请求的路径 var urlMethod = req.method;//获取请求的方法 var urlObj = url.parse(urlstr,true); console.log(urlObj); console.log(urlMethod); res.end(“hello”);});server.listen(8080);
リクエストを処理する
リクエストはgetとpostの2種類に分かれており、getリクエストのURLアドレスにはパラメータがあり、req.urlはパラメータを取得することができます。より複雑。 req.on() を使用してポストリクエストを処理します。
ポストリクエストメソッド: req.on("data"function(){}) を使用して読み取り、str 文字列連結を使用し、req.on("end",function(){}) が完了した後に出力します。投稿リクエストで送信するパラメーター;
get リクエスト メソッド: リクエスト アドレスで url.parse(req.url,true).query を使用してパラメーターを取得します。
var http = require("http"); var fs = require("fs"); var url = require("url"); var querystring = require("querystring"); var server = http.createServer(function (req,res) { console.log(req.method); var pathname = url.parse(req.url,true).pathname; if(pathname=="/"){ // 加载注册页面 var rs = fs.createReadStream("post.html"); rs.pipe(res); }else if(pathname=="/post"){ // 处理post请求 var str = ""; req.on("data",function (chunk) { // console.log(chunk.toString()); str += chunk; }); req.on("end",function(){ var postObj = querystring.parse(str); console.log(postObj); }) }else if(pathname=="/get"){ // get请求 var getObj = url.parse(req.url,true).query; res.write(JSON.stringify(getObj)); res.end(); }else if(pathname!="/favicon.ico"){ var rs = fs.createReadStream("."+pathname); rs.pipe(res); }; }); server.listen(8787);
アップロードファイル処理
フロントエンドの HTML コードは次のとおりです。 詳細は説明しません。
<form action=“/upimg” method=“post” enctype=“multipart/form-data”> 用户名: <input type=“text” name=“user”><br> 密码: <input type=“password” name=“pass”><br> 上传图片: <input type=“file” name=“file1”><br> <input type=“submit” value=“提交”></form>
ファイルアップロードを実装するには、formidable モジュールを導入する必要があります var formidable = require("formidable"); そのようなモジュールがない場合は、ターミナルで npm install formidable と入力してインストールします。
form.parse(req, function(err, field, fies){}) メソッド コールバック関数 3 つのパラメータ
err: エラーメッセージを返す
fields: 投稿リクエストによって返されるフィールドと対応する値
fies: アップロードされたファイルオブジェクト、オブジェクトにはファイルの多くの詳細情報が含まれています
ファイル情報を取得した後、データストリームの読み取りと書き込みを使用してファイルをコピーします
var http = require("http"); var fs = require("fs"); var url = require("url"); // 文件上传 var formidable = require("formidable"); var server = http.createServer(function(req,res){ var pathname = url.parse(req.url,true).pathname; if(pathname=="/"){ var rs = fs.createReadStream("uploads.html"); rs.pipe(res); }else if(pathname=="/uploads"){ // 实例化一个formidable类 var form = new formidable.IncomingForm(); // 调用parse方法 form.parse(req,function(err,fields,files){ if(err){ return console.log(err); }else{ // console.log("字段",fields); // 存储字段 var fieldStr = JSON.stringify(fields); fs.writeFileSync("1.txt",fieldStr); // 转存文件 if(!fs.existsSync("uploads")){ fs.mkdir("uploads"); } // 随机路径 var filePath = files.img.path; var rs = fs.createReadStream(filePath); var ws = fs.createWriteStream("./uploads/"+files.img.name); rs.pipe(ws); rs.on("data",function (chunk) { }) rs.on("end",function(){ console.log("复制成功"); res.write("上传成功"); res.end(); }) res.setHeader("Content-type","text/html;charset=utf8"); console.log("文件",files); } }) }else if(pathname!="/favicon.ico"){ var rs = fs.createReadStream("."+pathname); rs.pipe(res); } }); server.listen(8880);
httpシミュレーションクライアント
主にオプション設定、最も基本的なパラメータは次のコードブロックです。
メソッド: リクエストメソッドを記述します。
ホスト: ここではローカルホストを例にします。
パス: リクエストのパス。
this http.createServer() を使用してサーバーを作成する代わりに、http.request() を使用してサーバーをリクエストします。残りはサーバーとほぼ同じです。vue-routerでElementUIを使ったナビゲーションを実装する方法
詳しい説明 vueプロジェクトにelementUIコンポーネントを導入する
Angular2 でのマテリアルの使用について (詳細なチュートリアル)
Angular で Lodash メソッドを使用するにはどうすればよいですか?
ネイティブjsを使用して、都道府県と市区町村間の3レベルの連携を実現します
以上がNode.jsでhttpモジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。