1. 程式人生 > >js學習總結----crm客戶管理系統之node編寫API接口

js學習總結----crm客戶管理系統之node編寫API接口

準備 獲取 ring length urn 使用 col asc ati

具體API代碼如下

var http = require(‘http‘),
    url = require(‘url‘),
    fs = require(‘fs‘);
var server  = http.createServer(function(req,res){
    var urlObj = url.parse(req.url,true),
        pathname = urlObj.pathname,
        query = urlObj.query;//存儲的是客戶端請求的URL地址中的問號傳參後面的信息(並且是以鍵值對的方式存儲的)
    //靜態資源文件請求的處理
var reg = /\.(HTML|CSS|JS|ICO)/i; if(reg.test(pathname)){ var suffix = reg.exec(pathname)[1].toUpperCase(); var suffixMIME = "text/html"; switch(suffix){ case "CSS": suffixMIME = "text/css" break; case "JS": suffixMIME
= "text/javascript" break; } try{ var conFile = fs.readFileSync("."+pathname,‘utf-8‘); res.writeHead(200,{‘content-type‘:suffixMIME+";charset=utf-8"}); res.end(conFile); }catch(e){ res.writeHead(404,{‘content-type‘:"text/plain;charset=utf-8"}); res.end(
"file is not found~"); } return; } //API數據接口的處理 var con = null,result = null,customId = null,customPath = "./json/custom.json"; //首先把custom.json文件中的內容都獲取到 con = fs.readFileSync(customPath,‘utf-8‘); con.length===0?con = ‘[]‘:null;//為了防止我們custom.json什麽都沒有,con是一個空字符串,我們使用JSON.parse轉換的時候會報錯,我們讓其等於‘[]‘ con = JSON.parse(con); //1)獲取所有的客戶信息 if(pathname === "/getList"){ //開始按照API文檔中的規範準備給客戶端返回的數據 result = { code:1, msg:"沒有任何的客戶信息", data:null }; if(con.length>0){ result = { code:0, msg:"成功", data:con }; } res.writeHead(200,{‘content-type‘:‘application/json;charset=utf-8;‘}); res.end(JSON.stringify(result)); return; } //2)、根據傳遞進來的客戶ID獲取某一個具體的客戶信息 if(pathname==="/getInfo"){ //把客戶端傳遞進來的ID var customId = query[‘id‘]; result = { code:1, msg:"客戶不存在", data:null } for(var i = 0;i<con.length;i++){ if(con[i]["id"]==customId){ result = { code:0, msg:"成功", data:con[i] } break; } } res.writeHead(200,{‘content-type‘:‘application/json;charset=utf-8;‘}); res.end(JSON.stringify(result)); return; } //3)、根據傳遞進來的客戶ID刪除這個客戶 if(pathname==="/removeInfo"){ var flag = false; customId = query["id"]; for(var i = 0;i<con.length;i++){ if(con[i]["id"]==customId){ con.splice(i,1); flag = true; break; } } result={ code:1, msg:‘刪除失敗‘ } if(flag){ fs.writeFileSync(customPath,JSON.stringify(con),‘utf-8‘) result={ code:0, msg:‘刪除成功‘ } } res.writeHead(200,{‘content-type‘:‘application/json;charset=utf-8;‘}); res.end(JSON.stringify(result)); return; } //4)、增加客戶信息 if(pathname==="/addInfo"){ //獲取客戶端通過請求主體傳遞進來的內容 var str = ""; req.on("data",function(chunk)){ str+=chunk; } req.on("end",function(){ if(str.length===0){ res.writeHead(200,{‘content-type‘:‘application/json;charset=utf-8;‘}); res.end(JSON.stringify({ code:1, msg:"增加失敗,沒有傳遞任何需要增加的信息" })); return; } var data = JSON.parse(str); //在現有的DATA中追加一個ID:獲取con中最後一項的ID,新的ID是在原有基礎上加一即可,如果之前一項都沒有,我們這一項的ID就是1 if(con.length===0){ data["id"] = 1; }else{ data["id"] = parseFloat(con[con.length-1]["id"])+1; } con.push(data); fs.writeFileSync(customPath,JSON.stringify(con),‘utf-8‘); res.end(JSON.stringify({ code:0, msg:"增加成功" })); }) return; } //5)、修改客戶信息 if(pathname==="/updateInfo"){ str =""; req.on("data",function(chunk){ str+=chunk; }) req.on("end",function(){ if(str.length===0){ res.writeHead(200,{‘content-type‘:‘application/json;charset=utf-8;‘}); res.end(JSON.stringify({ code:1, msg:"修改失敗,沒有傳遞任何需要修改的信息" })); return; } var flag = false; data = JSON.parse(str); for(var i = 0;i<con.length;i++){ if(con[i]["id"]==data["id"]){ con[i] = data; flag = true; break; } } result.msg = "修改失敗,需要修改的客戶不存在"; if(flag){ fs.writeFileSync(customPath,JSON.stringify(con),"utf-8"); result = { code:0, msg:"修改成功" } } res.writeHead(200,{‘content-type‘:‘application/json;charset=utf-8;‘}); res.end(JSON.stringify(result)); }) return; } //如果請求的地址不是上述任何一個,則提示不存在 res.writeHead(404,{‘content-type‘:‘text/plain;charset=utf-8;‘}); res.end("請求的數據接口不存在") }) server.listen(80,function(){ console.log("server is success,listening on 80 port") })

js學習總結----crm客戶管理系統之node編寫API接口