運用的知識:http,fs,get,postjavascript
接口定義:
/user?act=reg$user=aaa&pass=bbb
後臺返回格式:{"ok":false,"msg":"緣由"}
/user?act=login$user=aaa&pass=bbb
後臺返回格式:{"ok":true,"msg":"緣由"}html
前端訪問:
對文件的訪問:
http://localhost:8080/1.html
http://localhost:8080/ajax.js
http://localhost:8080/1.jpg前端
對接口的訪問:
http://localhost:8080/user?act=reg$user=aaa&pass=bbbjava
服務器(後端代碼):
const http = require("http");
const querystring = require("querystring");
const fs = require("fs");
const urlLib = require("url");ajax
var users = {}; //定義用戶json,好比{「blue」:「123456」,「zhangsan」:「666666」}json
var server = http.createServer(function(req,res){
var str = "";
req.on("data",function(data){
str += str;
});
req.on("end",function(){
var obj = urlLib.parse(req.url,true);
const url = obj.pathname;
const GET = obj.query;
const POST = querystring.parse(str);
//區分一下前端到底訪問接口仍是文件
if (url == '/user') { //訪問接口
switch (GET.act){
case 'reg':
//檢查前端傳過來的參數用戶名是否已經有了
if (users[GET.user]) {
res.write('{"ok":false,"msg":"此用戶已存在"}')
} else{
//有的話往users裏面插入
users[GET.user] = GET.pass;
res.write('{"ok":true,"msg":"註冊成功"}');
}
break;
case '/login':
//檢查用戶是否存在
if (users[GET.user]==null) {
res.write('{"ok":false,"msg":"用戶不存在"}');
} else if(users[GET.user]!=GET.pass){
//檢查用戶密碼是否正確
res.write('{"ok":false,"msg":"密碼不對"}');
}else{
res.write('{"ok":true,"msg":"登陸成功"}');
}
break;
default:
res.write('{"ok":false,"msg":"未知的act"}');
}
res.end();
} else{ //訪問文件
//讀取文件
var file_name = "./www"+url;
fs.readFile(file_name,function(err,data){
if (err) {
res.write("404");
} else{
res.write(data);
}
res.end();
});
}
});
}).listen(8081);後端
前端代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="ajax.js" ></script>
<script>
window.onload=function(){
var oTxtUser = document.getElementById("user");
var oTxtPass = document.getElementById("pass");
var oBtnReg = document.getElementById("reg_btn");
var oBtnLogin = document.getElementById("login_btn");
//註冊按鈕事件
oBtnReg.onclick = function(){
ajax({
url:'/user', //這裏是接口的名字
data:{act:'reg', user:oTxtUser.value, pass:oTxtPass.value},//這裏是傳遞過去的參數
type:'get',
success:function(str){
var json = eval('('+str+')');
if (json.ok) {
alert("註冊成功");
} else{
alert("註冊失敗:" + json.msg);
}
},
error:function(){
alert("通訊錯誤")
}
});
}
//登陸按鈕事件
oBtnLogin.onclick = function(){
ajax({
url:'/user', //這裏是接口的名字
data:{act:'reg', user:oTxtUser.value, pass:oTxtPass.value},//這裏是傳遞過去的參數
type:'get',
success:function(str){
var json = eval('('+str+')');
if (json.ok) {
alert("登陸成功");
} else{
alert("登陸失敗:" + json.msg);
}
},
error:function(){
alert("通訊錯誤")
}
});
}
}
</script>
</head>
<body>
用戶名: <input type="text" id="user"/><br />
密碼:<input type="password" id="pass"/><br />
<input type="button" id="reg_btn" value="註冊" />
<input type="button" id="login_btn" value="登陸" />
</body>
</html>服務器