如何发送请求?
- 方法:
- 用浏览器(chrome)地址栏
- 用curl命令 例如:curl http://127.0.0.1:8888/xxx
概念:
帮你发请求的工具叫作【用户代理】
英文名:User Agent
如何做出一个响应?
需要编程知识 (源代码)
Node.js有一个http模块可以做到
命令:
node server.js 8888
用node监听8888端口
- 注意事项:
- 这些代码就是服务器代码,一般放在服务器上
- path是不带查询参数的路径 /x
- query是查询参数的对象形式 {a='1'}
- queryString是查询参数的字符串形式 ?a=1
- PathWithQuery是带查询参数的路径,一般不用
- request是请求对象
- response是响应对象
代码逻辑
‵ 这种字符串 ‵ 里面可以回车
' 这种字符串 ' 里面要回车只能用\n表示
逻辑
每次收到请求都会把中间的代码执行一遍
用if、else判断路径,并返回响应
如果是已知路径,一律返回200
如果是未知路径,一律返回404
content-Type表示内容的【类型/语法】
response.write()可以填写返回的内容
response.end()表示响应可以发给用户了
代码在/路径返回一个HTML内容,然后在/x路径返回一个CSS内容 然后在/y路径返回一个JS内容。
注意事项
- URL里的后缀卵用没有,/y.css不一定是CSS内容
- content-Type才是决定文件类型的关键
系统的学习HTTP
体系化学习,必须学会什么?
- 基础概念(有哪些是必会的)
- 如何调试(用的是Node.js,可用log/debugger)
- 在哪查资料(用的是Node.js,看Node.js文档)
- 标准制定者是谁(HTTP规格文档:RFC 2612等)
HTTP基础概念
- 请求
- 细节:
三部分: 请求行、请求头、请求体
请求动词有 GET(获取)/POST(上传)/ PUT / PATCH / DELETE 等
请求体在GET请求中一般为空
文档位于RFC 2612第五章
大小写不敏感
响应
- 细节 三部分:状态行、响应头、响应体
常见的状态码是考点
文档位于RFC 2612 第六章
用curl构造请求
curl -v http://127.0.0.1:8888
- 设置请求动词 -X POST
注意大小写
-
设置路径和查询参数 直接在url后面加
-
设置请求头 -H 'Name:Value'或者--header 'Name:value'
-
设置请求体 -d '内容'或者--data '内容'
用Node.js 读取请求
- 读取请求动词
request.method
console.log("method:");
console.log(method);
- 读取路径 request.url路径,带查询参数
path纯路径,不带查询参数
query只有查询参数
PathWithQuery为查询参数 + 路径
比如: curl http://localhost:8888/?wd=888 , ?wd=888为查询参数
- 读取请求头 request.headers['Accept']
console.log("request.headers");
console.log(request.headers);
- 读取请求体(比较复杂不讲)
用node.js设置响应
- 设置响应状态码 response.statusCode = 200 可编辑
- 设置响应头 response.setHeader('content-Type','text/html');
- 设置响应体 response.write('内容')
可追求内容(再写一行response.write即可)
curl 还能用来下载图片
curl + 图片地址 > xxx.jpg 就能下载到xxx.jpg里面
状态码404依然可以显示响应体等内容,和其他状态码没有区别
如何调试?
怎么知道自己写对了还是错了?
console.log 调试大法
console.log 可以验证对错