NodeJS Webサーバの構築
6143 ワード
1.インストールexpressフレームワークのダウンロード
Expressフレームワークのコア特性:は、HTTP要求に応答するためにミドルウェアを設定することができる. は、異なるHTTP要求動作を実行するためのルーティングテーブルを定義する. は、テンプレートにパラメータを渡すことによってHTMLページを動的にレンダリングすることができる.
2.hello world
詳細はこちら
3.静的リソース
4.GETとPOSTリクエスト
5.ファイルアップロードおよびfsモジュール
まずnodeJSのfsモジュールについて簡単に説明します
fsモジュールはnodeJSがファイルを操作する機能モジュールで、強力なapiが豊富で、ここでは一般的によく使われる読み取りと書き込みのプレゼンテーションしかしません.他のAPIをもっと知りたいなら、ここをクリックしてください.
ファイルを読む
ファイルの書き込み
注1:ポイントmulterの詳細を確認します
6.簡易ログイン機能
使用されるモジュール:fs,bodyParser
7.簡易登録機能
原理:ユーザー名は既に登録されていますか?=>jsonファイルへの書き込み
Expressフレームワークのコア特性:
cnpm install express --save
//node.js , JSON, Raw, Text URL
cnpm install body-parser --save
// Cookie 。 req.cookies cookie,
cnpm install cookie-parser --save
//node.js , enctype="multipart/form-data"( MIME )
cnpm install multer --save
// , express
cnpm list express
/data/www/node
└── [email protected] -> /Users/tianqixin/www/node/node_modules/.4.15.2@express
2.hello world
詳細はこちら
3.静的リソース
app.use(express.static('public'));
//PS: 'public' , url public/
4.GETとPOSTリクエスト
//===============GET===============
app.get('/process_get', function (req, res) {
// JSON
var response = {
"first_name":req.query.first_name,
"last_name":req.query.last_name
};
console.log(response);
res.end(JSON.stringify(response));
})
//===============POST===============
var bodyParser = require('body-parser');
// application/x-www-form-urlencoded
var urlencodedParser = bodyParser.urlencoded({ extended: false })
app.post('/process_post', urlencodedParser, function (req, res) {
// JSON
var response = {
"first_name":req.body.first_name,
"last_name":req.body.last_name
};
console.log(response);
res.end(JSON.stringify(response));
})
// :
//get req.query.xxx
//post req.body.xxx
//post urlencodedParser
5.ファイルアップロードおよびfsモジュール
まずnodeJSのfsモジュールについて簡単に説明します
//
var fs = require('fs'),
path = require('path');
fsモジュールはnodeJSがファイルを操作する機能モジュールで、強力なapiが豊富で、ここでは一般的によく使われる読み取りと書き込みのプレゼンテーションしかしません.他のAPIをもっと知りたいなら、ここをクリックしてください.
ファイルを読む
//readFile(filename,[options],callback);
/**
* filename, ,
* [options], , flag( , r+ ;w+ , ) encoding
* callback , err, data
*/
fs.readFile( req.files[0].path, (err,data) => {
if(err){
console.log(' ')
}
})
ファイルの書き込み
// fs.writeFile(filename,data,[options],callback);
/**
* filename, ? path+filename
* data, , Buffer
* [options],flag,mode( ),encoding
* callback , err, data
*/
//multer [ 1]
var multer = require('multer');
app.use(multer({ dest: '/tmp/'}).array('image'));
// /upload/ ,
var des_file = __dirname + "/upload/" + req.files[0].originalname;
fs.writeFile(des_file, data, err => {
if(err){
console.log(err)
}else{
response = {
message: 'success!',
filename: req.files[0].originalname
};
}
console.log(response);
res.end(JSON.stringify( response))
})
注1:ポイントmulterの詳細を確認します
6.簡易ログイン機能
使用されるモジュール:fs,bodyParser
var express = require('express');
var app = express();
var fs = require("fs");
var bodyParser = require('body-parser');
// application/x-www-form-urlencoded
var urlencodedParser = bodyParser.urlencoded({ extended: false })
const PATH = __dirname+'/';
//
app.post('/login',urlencodedParser, (req,res) => {
fs.readFile( PATH + "user.json", 'utf8', function (err, data) {
data = JSON.parse( data );
let userName = req.body.userName;
let passWord = req.body.passWord;
console.log(' : '+req.body.userName,req.body.passWord);
for(let i in data){
let item = data[i];
if(item.name == userName && item.password == passWord){
console.log(item);
console.log('login successful!')
res.sendFile(PATH+"/index.html")
return
}else{
res.end('wrong password')
}
}
});
})
7.簡易登録機能
原理:ユーザー名は既に登録されていますか?=>jsonファイルへの書き込み
/**
*
* @param {[type]} err [description]
* @param {[type]} data) { data [description]
* @return {[type]} [description]
*/
app.post('/register',urlencodedParser, (req,res) => {
let userName = req.body.userName;
let passWord = req.body.passWord;
fs.readFile( PATH + "user.json", 'utf8', function (err, data) {
data = JSON.parse( data );
let data_len = Object.keys(data).length;
let count = 0
for(let i in data){
let item = data[i];
console.log(typeof(userName),userName , item,userName in item)
if(userName == item.name){
return res.json(' ')
}else{
count++;
}
}
if(count == data_len){
let user_tem = {
"name": userName,
"password": passWord,
"id": data_len+1
};
data['user'+(data_len+1)] = user_tem;
writeFile(JSON.stringify(data));
return res.json(' ')
}
console.log(data)
})//readFile
})
/**
* user.json
* @param {[type]} text [description]
* @return {[type]} [description]
*/
function writeFile(text){
fs.writeFile('./user.json', text, function(err){
if (err) {
throw err;
}
console.log(' ');
//
fs.readFile('./user.json', 'utf-8', function(err, data) {
if (err) {
throw err;
}
console.log(data);
});
})
}