14.【HTTP】什么是HTTP?

282 阅读2分钟

一、请求与响应模型

服务器-----(请求/响应)-----客户端

客户端如何向服务器发送请求?

方法一:chrome地址栏搜索
方法二:curl命令,curl -v https://www.baidu.com
概念一:帮助用户发送请求的工具叫作用户代理,即User Agent,方法二中的用户代理返回为User-Agent: curl/7.67.0

服务端如何向客户端发送响应?

使用node.js中的http模块编写服务器代码,服务器本质上是一行行代码

命令行node server.js 8888的用处

  1. 文件server.js中的代码监听服务器的8888端口
  2. 客户端向8888端口发起请求,进入server.js代码中
  3. 服务端的8888端口每接收一次请求,server.js中的代码则运行一次
  4. 服务器根据请求路径返回响应的内容

请求的语法

  1. 请求动词(GET请求内容/POST上传内容) 路径和查询参数 协议名/版本号
    举例:get / http/1.1
  2. Host:域名或IP
  3. Accept:text/html 声明客户端只接收html的文件
  4. Content-Type:请求体的格式
  5. 回车
  6. 请求体(上传内容)

注意:

  1. 1是请求行、234是请求头、6是请求体
  2. 请求体在GET请求中一般为空
  3. 大小写不敏感

响应的语法

  1. 协议名/版本号 状态码 状态字符串
  2. Content-Type:响应体的格式
  3. 回车
  4. 响应体(也就是下载内容)

注意:

  1. 1是状态行、2是响应头、4是响应体
  2. 状态码请熟记

二、如何用curl构造请求?

写一个请求

举例:curl -v http://localhost:8888(须保证服务器是开启状态,使用代码node server.js 8888开启服务器的8888端口)

  1. 设置请求动词为上传post:curl -v -X POST
  2. 设置请求头:curl -v -H 'Name:Value'
  3. 设置请求路径或者查询参数:直接在url后添加
  4. 设置请求体:-d '内容'

用Node.js读取请求

  1. 读取请求动词:request.method
  2. 读取路径:request.url(带查询参数的路径)、path(不带查询参数的纯路径)、query(查询参数)
  3. 读取请求头:request.headers['Accept']
  4. 读取请求体:略

三、设置响应

  1. 修改一个响应的状态码:response.statusCode = 200
  2. 设置响应头:response.setHeader('Content-Type','text/html');
  3. 设置响应体:response.write('内容') 内容可追加

四、console.log调试方法

不断打印出变量查看其是否正确