Http 请求与响应

221 阅读2分钟

前言

http消息是由客户端到服务端的请求以及服务端到客户端的响应组成


一、请求(request)

  • 请求动词 路径加查询参数 协议名/版本
  • Host:域名或Ip
  • Accept: text/html
  • content-Type:请求体的格式
  • 回车
  • 请求体(上传内容)

标注:

请求行(橙色)

1. 请求动词:

GET/POST/PUT/PATCH/DELETE等
记住:
GET:获取
POST:上传
注意:当请求动词为GET时,请求体一般为空

2. 协议版本

目前几乎用的都是http1.1版本,增加了一个很重要的特性它支持长连接。


请求头(蓝色)

请求头部为请求报文添加了一些附加信息,由“名:值”对组成,每行一对,名和值之间使用冒号分隔。

比较重要的附加信息有上面三种:

1.Host: 放在第一个,表示指定主机


2.Accept:告诉服务器,我浏览器愿意接收的类型

如:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,
image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
看/后面的类型,表浏览器能接收html、xml等内容

3. Content-Type:请求体格式,一般当请求动词为POST时使用


除了以上的附加信息,还有其他常见的如下:


空格

表示告诉服务器请求头到此结束了接下来是请求正文


二.响应(response)

  • 协议名/版本 状态码 状态字符串
  • Content-Type:响应体格式
  • 回车
  • 请求体(上传内容)

标注

状态行(橙色)

200 为状态码,
OK 为解释状态码的字符串,一般不用在意

常用状态码如下(面试常问!!):

完整文档状态码


响应头(蓝色)

Content-Type指示了响应体的格式,
该例子指示响应体为CSS

其他常见响应头:



Node.js 部署服务器

CODE链接

一、curl命令 构造请求

curl -v http://127.0.0.1:8888
  • 设置请求动词
  1. -X POST
  2. 注意X 大写
curl -v -X POST http://127.0.0.1:8888
  • 设置路径和查询参数

    直接域名后面加

  • 设置请求头

-H 'Name:Value' 或者 --header 'Name:Value'

curl -v -X POST -H 'Accept:text/html' http://127.0.0.1:8888
curl -v -X POST -H 'Ymk:handsome' http://127.0.0.1:8888        /*自定义请求头*/
  • 设置请求体

-d '内容' 或者 --data '内容'

curl -v -X POST -H 'Content-Type:text/plain;charset=utf-8' -d '请求体内容' http://127.0.0.1:8888 

二、Node.js 读取请求

  • 读取请求动词

    request.method

var method = request.method;
console.log("method:"+method);
  • 读取路径
  1. request.url路径,带查询参数
  2. 一个path表示纯路径,不带查询参数
  3. query 只有查询参数
  • 读取请求头
  1. request.headers 读取整个请求头
  2. request.headers['Accept'] 读取请求头中的Accept信息
  • 读取请求体

    有点点复杂

三、Node.js 设置响应

  • 设置响应状态码
response.statusCode=200
  • 设置响应头
response.setHeader('Content-Type','text/html');
response.setHeader('Ymk','handSome');
  • 设置响应体
response.write('内容')

注意:以上命令可写两遍,追加响应体内容