const http = require('http');
const mysql = require('mysql');
const url = require('url');
const util = require('util');
//連接數據庫
const connection = mysql.createConnection({
host:'---',
user:'--',
password:'--',
database:'----'
});
connection.connect(function(){
console.log('數據庫連接成功!');
});
//request 請求信息 response 返回信息
http.createServer(function(request,response){
//獲得HTTP請求的method和url
console.log(request.method+':'+request.url);
if(request.method=="GET"&&request.url!="/favicon.ico"){
let params = url.parse(request.url,true).query; //parse將字符串轉成對象,request.url="/?id=1",true表示id:'1'
response.writeHead(200,{'Access-Control-Allow-Origin':'*','Content-Type':'text/plain;charset=utf-8'});
let serSql = '數據庫查詢語句';
connection.query(serSql,function(err,result){
if(err){
console.log('[SELECT ERROR] - ',err.message);
return;
}
console.log('查詢結果:',result);
response.end(JSON.stringify(result));//返回值必須是 string 或 buffer 類型
});
}
else if(request.method=="POST"){
// 定義一個空的數據變量來接受post請求的參數
let postData = '';
// 給req對象注冊一個接收數據的事件
request.on('data',function (chuck) {
/**data事件詳解
* 瀏覽器每發送一次數據包(chuck)是字符串類型的,該函數會調用一次。
* 該函數會調用多次,調用的次數是由數據和網速限制的
*/
// 每次發送的都數據都疊加到postData里面
postData += chuck;
})
// 到post請求數據發完了之后會執行一個end事件,這個事件只執行一次
request.on('end', function () {
// 此時服務器成功接受了本次post請求的參數
// post請求最終獲取到的數據就是url協議組成結構中的query部分
console.log(postData);
// 使用querystring模塊來解析post請求
/**
* querystring詳解
* 參數:要解析的字符串
* 返回值:解析之后的對象。
*/
let temp = JSON.parse(postData);
//插入數據
const addSqlParams = [?,?,?,?,?];// addSql 中 ? 對應的數據填在 addSqlParams 中
const addSql = "insert into 表格名稱 values(?,?,?,?,?)";
connection.query(addSql,addSqlParams,function(err,result){
if(err){
console.log('[INSERT ERROR] - ',err.message);
return;
}
console.log('INSERT ID:',result);
});
})
}
}).listen(要監聽的端口號);