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="/?,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(要监听的端口号);