HTTP 浅析
node server.js 8888 命令 在电脑创建或占用了8888端口 server.js 占用其端口 如果有人请求8888 就会运行一次server.js里面的代码。
curl -v http://127.0.0.1:8888/xxx 这里请求看一次8888端口
在bash就会显示:
λ node server.js 8888
监听 8888 成功
请用在空中转体720度然后用电饭煲打开 http://localhost:8888
有个傻子发请求过来啦!路径(带查询参数)为:/
有个傻子发请求过来啦!路径(带查询参数)为:/favicon.ico
有个傻子发请求过来啦!路径(带查询参数)为:/xxx
逻辑
每次收到请求都会把中间的代码执行一遍
用if else判断路径,并返回响应
如果是已知路径,一律返回200
如果是未知路径,一律返回404
Content-Type表示内容的「类型/语法」
response.setHeader('Content-Type', 'text/html;charset=utf-8');
response.setHeader('Content-Type', 'text/css;charset=utf-8');
response.setHeader('Content-Type', 'text/javascript;charset=utf-8');
response.write()可以填写返回的内容
response.write(`你输入的路径不存在对应的内容\n`)
/* 这是html*/
response.write(`
<!DOCTYPE html>
<head>
<link rel="stylesheet" href="/x">
<script src="/y"></script>
</head>
<body>
<h1>我是红色</h1>
<p>我是粉红色</p>
</body>
`);
/* 这是js*/
response.write(`
console.log("这是JS的部分")
`);
response.end()表示响应可以发给用户了
HTTP 基础概念
请求
请求动词路径加查询参数协议名/版本
Host: 域名或IP
Accept: text/html 我想接受什么内容
Content- Type:请求体的格式
回车
请求体(也就是上传内容)
curl -v -X POST —data ‘上传内容’ http://127.0.0.1:8888/
细节
三部分:请求行、请求头、请求体
请求动词有GET / POST /PUT / PATCH/ DELETE等;GET获取 POST发送
请求体在GET请求中一般为空
文档位于RFC 2612第五章
大小写不敏感(随意),最好照着我的写
响应
协议名/版本状态码状态字符串
Content- Type:响应体的格式
回车
响应体(也就是下载内容)
用CURL构造请求(在cmder里面)
请求:
curl -v http://127.0.0.1:8888/xxx 这里请求看一次8888端口
设置请求动词(动词为POST)
curl -v -X POST --data '上传内容' http://127.0.0.1:8888/
设置请求头(这里是:我要接受HTML内容)
curl -v -X POST -H 'Accept:text/html' http://127.0.0.1:8888/
设置请求体(-d/—data)
curl -v -X POST --data '上传内容' http://127.0.0.1:8888/
用Node.js 读取请求(在JS里面)
读取请求动词
console.log(request.method);
读取路径
console.log('路径(带查询参数)为:' + pathWithQuery)
读取请求头
console.log(request.headers['Accept']);
设置响应状态码
response.statusCode = 200
设置请求头
response.setHeader('Content-Type', 'text/html');
设置响应体
response.write(`哈哈哈\n`)