Node:编写服务器(二)

处理表单get提交

这里需要使用一个新的模块url模块,专门用来解析url的
基本使用:

var url=require('url')

var obj=url.parse('https://www.bilibili.com/video/BV1Ns411N7HU?t=9&p=31')
console.log(obj)

在这里插入图片描述
可以看出返回的结果是一个对象

为了方便获取query中的参数,给parse()方法添加第二个参数true,将query转为数组

var obj=url.parse('https://www.bilibili.com/video/BV1Ns411N7HU?t=9&p=31',true)

在这里插入图片描述

实例:接收form表单提交的数据

form.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<form method="get" action="getInfo">
			用户名:<input type="text" name="username" /><br />
			年 龄:<input type="text" name="age" /> <br />
			<input type="submit" value="提交" />
		</form>
	</body>
</html>

form.js

var http = require('http')
var fs = require('fs')
var url = require('url')

http.createServer(function(request, response) {
    //将路径解析为对象
	var parseObj = url.parse(request.url, true)
   
    //单独获取不包含查询字符串的路径部分(该路径不包含?之后的内容)
	var pathname = parseObj.pathname
	
	if (pathname === '/') {
		fs.readFile('./form.html', function(err, data) {
			if (err) {
				return response.end('404 Not Find')
			} else {
				response.end(data)
			}
		})
	} else if (pathname === '/getInfo') { //接收表单的提交
	response.setHeader('Content-Type', 'text/palin; charset=utf-8');
		response.end(JSON.stringify(parseObj.query))
	}
}).listen(5000, function() {
	console.log("server is running....")
})

在这里插入图片描述

重定向

如何通过服务器让客户端重定向?

  • 状态码设置为302,临时重定向 response.statusCode
  • 在响应头中通过Location告诉客户端往那重定向 response.setHeader

如果客户端发现收到服务器的响应的状态码是302,就会自动去响应头中去找Location,然后对该地址发起新的请求,这样就能看到客户端自动跳转

response.statusCode = 302
response.setHeader('Location', '/')
response.end()

注:
一次请求对应一次响应,响应结束这次请求也就结束。如果前面已经end结束了,就不会响应其它数据(是不会响应数据,还会继续执行下面的代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值