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(要監聽的端口號);