1、node–get、post请求
index.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<h1>这是登录页面</h1>
<!-- 默认是get请求 -->
<!-- get和post区别?
get请求参数在url内部 请求参数可见
post不可见,请求速度比较慢
action请求地址
-->
<!-- <form action="http://localhost:8989/submit" method="get">
如果是form直接提交数据,前端一定要有name值,才可以发送数据给后台
name相当于前后端接口
<input type="text" placeholder="请输入用户名" name="user"><br><br>
<input type="password" placeholder="请输入密码" name="pass" ><br><br>
<input type="submit">
</form> -->
<form action="http://localhost:8989/submit" method="get">
<input type="text" placeholder="请输入用户名" name="user"><br><br>
<input type="password" placeholder="请输入密码" name="pass" ><br><br>
<input type="submit">
</form>
<a href="">登录</a>
</body>
</html>
get请求:
js代码:
const http=require('http');
const fs=require('fs');
const path=require('path');
const url=require('url');
// 引入读文件的模块
const readfile=require('readfile');
//建立服务器
let server=http.createServer((req,res)=>{
if(req.url=='/favicon.ico') return;
//如果浏览器地址输出form打开
if(req.url.startsWith('/form')){
//则通过路径读取内容
readfile(__dirname,req,res);
}else if(req.url.startsWith('/submit')){
// get请求的参数,在url内部,所以需要解析url 需要url模块
// url模块专门用来处理地址
// url.parse(地址,true)可以把地址解析为对象;true可以把存储参数的query转化为对象
// 前端传递过来的数据
console.log(url.parse(req.url,true).query);
let params=url.parse(req.url,true).query;
// 发送的数据只能是字符串
res.end(`用户名是${
params.user}密码是${
params.pass}`);
}else{
res.end('404');
}
})
server.listen('8989')
在cmd中运行js
打开inde.html,点击提交
跳转得到
post请求
首先修改index.html代码
<form action="http://localhost:8989/submit" method="post">
post的js代码:
const url=require('url');
const querystring=require('querystring')
// 引入读文件的模块
const readfile=require('readfile');
let server=http.createServer((req,res)=>{
if(req.url=='/favicon.ico') return;
if(req.url.startsWith('/form')){
readfile(__dirname,req,res);
}else if(req.url.startsWith('/submit')){
// post请求发送数据的时候,是一段段发送
// data事件,监听接收的数据
// 一般测试不出来。
var allData='';
req.on('data',(chunk)=>{
allData+=chunk;
})
// end事件 数据接收完的时候执行
req.on('end',()=>{
// allData得到的是k=v&k=v形式的数据 使用querystring转化 querystring.parse()可以把类似k=v&k=v的字符串转化为对象
console.log(querystring.parse(allData));
res.end(`用户名是${
allData.user}密码是${
allData.pass}`);
})
}else{
res.end('404');
}
})
server.listen('8989')
按步骤运行即可
两个js文件整合起来:
const readfile=require('readfile');
const http=require('http');
const url=require('url');
const querystring=require('querystring')
// 创建服务器
let server=http.createServer((req,res)=>{
if(req.url=='/favicon.ico') return;
// 处理get或者post请求
// 如果是post请求的时候,query参数为空
if(req.url.startsWith('/form')){
readfile(__dirname,req,res);
return;
}
if(url.parse(req.url,true).query