一、请求与响应模型
服务器-----(请求/响应)-----客户端
客户端如何向服务器发送请求?
方法一:chrome地址栏搜索
方法二:curl命令,curl -v https://www.baidu.com
概念一:帮助用户发送请求的工具叫作用户代理,即User Agent,方法二中的用户代理返回为User-Agent: curl/7.67.0
服务端如何向客户端发送响应?
使用node.js中的http模块编写服务器代码,服务器本质上是一行行代码
命令行node server.js 8888的用处
- 文件server.js中的代码监听服务器的8888端口
- 客户端向8888端口发起请求,进入server.js代码中
- 服务端的8888端口每接收一次请求,server.js中的代码则运行一次
- 服务器根据请求路径返回响应的内容
请求的语法
- 请求动词(GET请求内容/POST上传内容) 路径和查询参数 协议名/版本号
举例:get / http/1.1 - Host:域名或IP
- Accept:text/html 声明客户端只接收html的文件
- Content-Type:请求体的格式
- 回车
- 请求体(上传内容)
注意:
- 1是请求行、234是请求头、6是请求体
- 请求体在GET请求中一般为空
- 大小写不敏感
响应的语法
- 协议名/版本号 状态码 状态字符串
- Content-Type:响应体的格式
- 回车
- 响应体(也就是下载内容)
注意:
- 1是状态行、2是响应头、4是响应体
- 状态码请熟记
二、如何用curl构造请求?
写一个请求
举例:curl -v http://localhost:8888(须保证服务器是开启状态,使用代码node server.js 8888开启服务器的8888端口)
- 设置请求动词为上传post:
curl -v -X POST - 设置请求头:
curl -v -H 'Name:Value' - 设置请求路径或者查询参数:直接在url后添加
- 设置请求体:
-d '内容'
用Node.js读取请求
- 读取请求动词:request.method
- 读取路径:request.url(带查询参数的路径)、path(不带查询参数的纯路径)、query(查询参数)
- 读取请求头:request.headers['Accept']
- 读取请求体:略
三、设置响应
- 修改一个响应的状态码:response.statusCode = 200
- 设置响应头:response.setHeader('Content-Type','text/html');
- 设置响应体:response.write('内容') 内容可追加
四、console.log调试方法
不断打印出变量查看其是否正确