Node简单服务器开发
運(yùn)用的知識(shí):http,fs,get,post
接口定義:
/user?act=reg$user=aaa&pass=bbb
后臺(tái)返回格式:{"ok":false,"msg":"原因"}
/user?act=login$user=aaa&pass=bbb
后臺(tái)返回格式:{"ok":true,"msg":"原因"}
前端訪問:
對(duì)文件的訪問:
http://localhost:8080/1.html
http://localhost:8080/ajax.js
http://localhost:8080/1.jpg
對(duì)接口的訪問:
http://localhost:8080/user?act=reg$user=aaa&pass=bbb
服務(wù)器(后端代碼):
const http = require("http");
const querystring = require("querystring");
const fs = require("fs");
const urlLib = require("url");
var users = {}; //定義用戶json,比如{“blue”:“123456”,“zhangsan”:“666666”}
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);
//區(qū)分一下前端到底訪問接口還是文件
if (url == '/user') { //訪問接口
switch (GET.act){
case 'reg':
//檢查前端傳過來的參數(shù)用戶名是否已經(jīng)有了
if (users[GET.user]) {
res.write('{"ok":false,"msg":"此用戶已存在"}')
} else{
//有的話往users里面插入
users[GET.user] = GET.pass;
res.write('{"ok":true,"msg":"注冊(cè)成功"}');
}
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":"密碼不對(duì)"}');
}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.οnlοad=function(){
var oTxtUser = document.getElementById("user");
var oTxtPass = document.getElementById("pass");
var oBtnReg = document.getElementById("reg_btn");
var oBtnLogin = document.getElementById("login_btn");
//注冊(cè)按鈕事件
oBtnReg.onclick = function(){
ajax({
url:'/user', //這里是接口的名字
data:{act:'reg', user:oTxtUser.value, pass:oTxtPass.value},//這里是傳遞過去的參數(shù)
type:'get',
success:function(str){
var json = eval('('+str+')');
if (json.ok) {
alert("注冊(cè)成功");
} else{
alert("注冊(cè)失敗:" + json.msg);
}
},
error:function(){
alert("通信錯(cuò)誤")
}
});
}
//登錄按鈕事件
oBtnLogin.onclick = function(){
ajax({
url:'/user', //這里是接口的名字
data:{act:'reg', user:oTxtUser.value, pass:oTxtPass.value},//這里是傳遞過去的參數(shù)
type:'get',
success:function(str){
var json = eval('('+str+')');
if (json.ok) {
alert("登錄成功");
} else{
alert("登錄失敗:" + json.msg);
}
},
error:function(){
alert("通信錯(cuò)誤")
}
});
}
}
</script>
</head>
<body>
用戶名: <input type="text" id="user"/><br />
密碼:<input type="password" id="pass"/><br />
<input type="button" id="reg_btn" value="注冊(cè)" />
<input type="button" id="login_btn" value="登錄" />
</body>
</html>
轉(zhuǎn)載于:https://www.cnblogs.com/fengyongxian/p/8900662.html
總結(jié)
以上是生活随笔為你收集整理的Node简单服务器开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日志文件的编写
- 下一篇: 微软收紧 Win11 安装要求,不支持的