node实例-登录及信息获取

那年仲夏 提交于 2020-01-17 23:49:24

      上篇文章中介绍了node的部分模块,这里通过一个简单的实例,把各个模块关联起来,给大家展示一下node是如何实现后端接口的。本实例中分别展示了一个post请求(登录)和一个get请求(获取信息)。

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>node接口案例</title>
</head>
<body>
	<form>
		用户名:<input id="username" type="input" name="username">
		密码:<input id="password" type="password" name="password">
		<button id="login">登录</button>
	</form>
</body>
<script type="text/javascript" src="node_modules/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
	$('#login').click(function () {
		$.ajax({
			url:'/login',
			data:{
				username:$('#username').val(),
				password:$('#password').val()
			},
			method:'POST',
			dataType:'json',
			success(res){
				if(res.status==1){
					console.log('登录成功')
					$.ajax({
						url:'/info',
						data:{
							username:$('#username').val()
						},
						dataType:'json',
						success(res){
							if(res.status==1){
								console.log('获取信息成功',res.data)
							}else{
								console.log(res.statusMsg);
							}
						}
					})
				}else{
					console.log(res.statusMsg);
				}
			}
		})
		return false;
	})
</script>
</html>
// index.js
let http = require('http');
let url = require('url');
let fs = require('fs');
let querystring = require('querystring');

// 定义json数据,模拟数据库
var users = {
	keith:{
		pwd:123,
		age:28,
		score:99
	},
	annie:{
		pwd:456,
		age:18,
		score:98
	}
}

http.createServer((req,res)=>{
	let path,get,post
	if(req.method=='GET'){
		let {pathname,query} = url.parse(req.url,true)
		path = pathname;
		get = query;
		complete()
	}else if (req.method=='POST') {
		let arr = []
		path = req.url;
		req.on('data',buffer=>{
			arr.push(buffer);
		})
		req.on('end',()=>{
			post = querystring.parse(Buffer.concat(arr).toString());
			complete();
		})
	}
	function complete(){
		if (path == '/login') {
			res.writeHead(200,{
				"Content-Type":'text/plain;chartset=utf-8'
			})
			let {username,password} = post;
			if(!users[username]){
				res.end(JSON.stringify({
					status:2,
					statusMsg:'用户名不存在!'
				}))
			}else if(password != users[username].pwd){
				res.end(JSON.stringify({
					status:2,
					statusMsg:'密码错误!'
				}))
			}else{
				res.end(JSON.stringify({
					status:1,
					statusMsg:'登录成功!'
				}))
			}
		}else if (path == '/info') {
			res.writeHead(200,{
				"Content-Type":'text/plain;chartset=utf-8'
			})
			let {username} = get;
			if(!users[username]){
				res.end(JSON.stringify({
					status:2,
					statusMsg:'用户名错误!'
				}))
			}else{
				res.end(JSON.stringify({
					status:1,
					statusMsg:'获取信息成功!',
					data:{
						age:users[username].age,
						score:users[username].score
					}
				}))
			}
		}else{
			fs.readFile(`./${path}`,(err,data)=>{
				if(err){
					res.end('404');
				}else{
					res.end(data);
				}
			})
		}
	}
}).listen(8080)

      代码可直接复制粘贴使用。首先使用node命令运行index.js,即可通过http://localhost:8080/index.html访问到页面。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!