node.js簡單數據接口開發


隨着網絡時代的快速發展,前端開發不僅僅是做出漂亮的頁面就可以了,還要會一點后端語言,那么后端語言有Java,php,node.js最常見,那我們應該學哪一種呢,為了讓我們自己更好的學習,我推薦選擇node.js。

下面是我開發時做個小測試;

測試項目目錄

app.js

//1, npm i express -S
//2, npm i body-parser -S
var express=require('express');
// var router = express.Router();
var app =express();

var bodyParser=require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// const querystring = require("querystring");
 
//設置跨域訪問
app.all('*', function(req, res, next) {
   res.header("Access-Control-Allow-Origin", "*");
   res.header("Access-Control-Allow-Headers", "X-Requested-With");
   res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
   res.header("X-Powered-By",' 3.2.1');
   res.header("Content-Type", "application/json;charset=utf-8");
   next();
});

//創建數據庫連接對象
const mysql = require('mysql');
const conn = mysql.createConnection({
host: '127.0.0.1',//數據庫地址
user: 'root',//賬號
password: 'root',//密碼
database: 'nodeproject',//庫名
multipleStatements: true, //允許執行多條語句
timezone:"08:00"//數據庫處理時間
})
//開始鏈接數據庫
conn.connect(function(err){
    if(err){
        console.log(`mysql連接失敗: ${err},正在重新連接!`);
        // setTimeout(function(){autoConnect(connect);},2000); //2s重新連接
    }else{
        console.log("mysql連接成功!");
    }
});


//全部列表查詢
app.get('/api/getlist',function(req,res){
    let sqlQuery="select * from user_info";
    conn.query(sqlQuery, (err, results) => {
        if (err) return res.json({ err_code: 1, message: '暫無數據', affextedRows: 0 })
        res.json({ err_code: 200, message: results, affextedRows: results.affextedRows })
    })
});

//按條件查詢
app.get('/api/getlistdetl', (req, res) => {
    const name = req.query.name
    const sqlStr = 'select * from user_info where name=?'
    conn.query(sqlStr, name, (err, results) => {
        if (err) return res.json({ err_code: 1, message: '查無此人', affextedRows: 0 })
        res.json({ err_code: 200, message: results, affextedRows: results.affextedRows })
    })
})

//添加用戶數據
app.post('/api/userInfo', (req, res) => {
    const username = req.body.name
    const age = req.body.age
    const sex = req.body.sex
    const addr = req.body.addr
    const tel = req.body.tel
    // const all=querystring.stringify({name:username,age:age,sex:sex})
    // console.log(username)
    // const sqlStr = 'INSERT INTO user_info SET ?'
    const sqlStr = 'insert into user_info set ?'
    conn.query(sqlStr, {name:username,age:age,sex:sex,addr:addr,tel:tel}, (err, results) => {
        if (err) return res.json({ err_code: 1, message: err, affectedRows: 0 })
        res.json({ err_code: 0, message: '添加成功', affectedRows: results.affectedRows })
    })
    
})

//用戶注冊
app.post('/api/user/register',(req,res)=>{
    const username=req.body.username
    const password=req.body.password
    const repassword = req.body.repassword
    const registerDate=new Date()
    // const sqlStr='INSERT INTO register SET ?'
    const sqlStr='insert into register set ?'
    // const sqlStr1='SELECT * FROM register WHERE username = ?'
    const sqlStr1='select * from register where username = ?'
    conn.query(sqlStr1,username,(err,results)=>{
        if(err) return res.json({err_code:1,message:err,affectedRows:0})
        // 數據不存在 就注冊成功
        if (results.length == 0 ) {
            //判斷兩次密碼是否一致
            if(password !=repassword){
                return res.json({err_code:201,message:'兩次輸入的密碼不一致',affectedRows:0})
            }
            // 把新用戶插入數據庫
            conn.query(sqlStr,{username:username,password:password,repassword:repassword,registerDate:registerDate}, (err, results)=> {
                // console.log(sqlStr)
            if(err){
                throw err
            }else{
                // res.end(JSON.stringify({status:'100',msg:'注冊成功!'}));
                res.json({err_code:0,message:'注冊成功',affectedRows:results.affectedRows})
            }
        })
        } else{ // 數據存在就注冊失敗
            // res.end(JSON.stringify({status:'101',msg:'該用戶名已經被注冊'}));
            res.json({err_code:101,message:'該用戶名已經被注冊',affectedRows:0})    
        }
    })   
})

//用戶登錄
app.post('/api/user/login',(req,res)=>{
    const username=req.body.username
    const password=req.body.password
    const sqlStr='select * from register where username=? and password=?'
    conn.query(sqlStr,[username,password],(err,results)=>{
        // console.log(results)
        if(err) return res.json({err_code:1,message:err,affectedRows:0})
        // if(null != results) return res.json({err_code:401,message:'用戶不存在',affectedRows:0})
        if(results.length == 0){
            res.json({err_code:301,message:'用戶名或密碼錯誤',affectedRows:0})
        }else{
            res.json({err_code:0,message:'登錄成功,正在跳轉...',affectedRows:results.affectedRows,user_info:results})
        }
    })
})





//獲取商品列表
app.get('/api/goods/goodsList',(req,res)=>{
    const sqlStr='select * from goods_info'
    conn.query(sqlStr,(err,results)=>{
        if(err) return res.json({err_code:1,message:err,affectedRows:0})
        res.json({err_code:0,message:'ok',goodsList:results})
    })
})


//獲取訂單信息
app.get('/api/order/order_info',(req,res)=>{
    const sqlStr='select * from order_info'
    conn.query(sqlStr,(err,results)=>{
        if(err) return res.json({err_code:1,message:err,affectedRows:0})
        res.json({err_code:0,message:'ok',order_info:results,affectedRows:results.affectedRows})
    })
})

//新訂單插入數據
app.post('/api/order/into_order',(req,res)=>{
    // const ordernum=req.body.ordernum
    const ordernum=new Date().getTime()+req.body.customerid
    const goodsname=req.body.goodsname
    const orderdate=new Date()
    const customerid=req.body.customerid
    const flownumber=new Date().getTime()
    const sqlStr='insert into order_info set ?'
    conn.query(sqlStr,{ordernum:ordernum,goodsname:goodsname,orderdate:orderdate,customerid:customerid,flownumber:flownumber},(err,results)=>{
        if(err) return res.json({err_code:1,message:err,affectedRows:0})
        res.json({err_code:0,message:'下單成功',affectedRows:results.affectedRows})
    })
})

//成功接單
// app.post('/api/order/success',(req,res)=>{
//     const status=req.body.status
//     const sqlStr='update order_info set status=1 where status=0'
//     conn.query(sqlStr,{status:status},(err,results)=>{
//         if(err) return res.json({err_code:1,message,err,affectedRows:0})
//         res.json({err_code:0,message:'接單成功',affectedRows:results.affectedRows})
//     })
// })



/*
時間格式化
*/
Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //
        "h+": this.getHours(), //小時
        "m+": this.getMinutes(), //
        "s+": this.getSeconds(), //
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
  }



//配置服務端口
 
var server = app.listen(3002, function () {
 
    var host = server.address().address;
 
    var port = server.address().port;
 
    console.log('Example app listening at http://localhost', host, port);
})

 

項目源碼:https://github.com/DreamS001/nodeProject.git

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM