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(要监听的端口号);