URL的组成
传输协议://服务器IP或域名:端口/资源所在的位置标识
http://www.itcast.cn/new/20181018/09152238514.html
http:超文本传输协议,提供了一种发布和接收html页面的方法
http协议
超文本传输协议:缩写:HTTP规定了如何从网站服务器传输超文本到浏览器,它基于客户端服务器架构工作,是客户端(用于)和(网站)请求和应答的标准
报文
在http请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式
1、请求报文
GET请求数据
POST发送数据
2、请求地址
app.on('reauest',(req,res)=>{
req.headers //获取请求报文
req.url //获取请求地址
req.method //获取请求方法
})
响应报文
1、HTTP状态码
200请求成功
404请求的资源没有被找到
500服务器端错误
400客户端请求有语法错误
2、内容类型
text/html
text/css
application/javascript
images/jpeg
application/json
处理文本乱码
在后写入charset=utf8
// 书写响应报文
res.writeHead(200, {
'content-type': 'text/html;charset=utf8'
});
执行命令使用nodemon 而不使用node
因为使用nodemon执行命令文件修改后自动进行从新执行,不需要手动执行
本机域名 localhost
本地ip 127.0.0.1
打开网址输入:localhost:3000
服务器模块的创建
// 用于创建网站服务器模块
const http = require(‘http’);
// 创建web服务器 app对象就是网络服务器对象
const app = http.createServer();
// 当客户端有请求来的时候
app.on(‘request’, (req, res) => {
// 响应
res.end(‘
hello user
’)});
// 监听3000端口
app.listen(3000);
console.log(‘网络服务器启动成功’);
CET请求参数
参数被放置在浏览器地址栏中
例如:http://localhost:3000/?name=zhangsan&age=20
传递多个信息使用&分隔
?后面代表请求的参数
获取url地址
//用于处理url地址
const url = require('url');
将域名端口后的参数解析为对象
// 1、要解析的url地址
// 2、将查询参数解析成对象形式
// parse可已将url处理为对象的形式
let params = url.parse(req.url, true).query;
console.log(params.name);
console.log(params.age);
处理请求参数模块
const querystring = require(‘querystring’);
req.on(‘end’, () => {
// 将字符串转变成对象
console.log(querystring.parse(postParams));
})
POST请求参数
1、参数被放置在请求体中进行传输
2、获取POST参数需要使用data事件和end事件
3、使用querystring系统模块将参数转换为对象格式
// 导入系统模块的querystring用于将HTTP参数转换为对象格式
const querystring=require('querystring');
app.on('request', (req, res) => {
// post参数是通过事件的方式接受的
// data当请求参数传递的时候出发data事件
// end当参数传递完成的时候出发end事件
let postParams = '';
// 监听参数传输事件
req.on('data', params => {
postParams += params;
});
// 监听参数传输完毕事件
req.on('end', () => {
// 将字符串转变成对象
console.log(querystring.parse(postParams));
})
res.end('ok')
});