请求和响应&node.js初体验

162 阅读4分钟

HTTP的请求与响应

请求与响应模型

1.png 请求指:客户端发一个东西发到服务器一个端口

响应指:服务端拿到请求之后在同一个端口返回一个响应

如何发请求?

方法

  •  用浏览器地址栏在下面这两张图里可以看到响应和请求。

2.png

3.png

  •  用curl命令,命令中间加 -v 可以详细显示

下面图详细的列出了请求和响应

4.png 概念

  • 帮你发请求的工具叫做用户代理。
  • 英文名user agent。

如何做出一个响应?

需要用编程

  • 如何运行并监听代码?新建终端用node+文件名+端口 如图即可
  • 这个相当于在我们的电脑上开一个端口,这个端口被server.js所监听,当有人请求了这个端口,便会进入server.js 请求多少次,里面的代码就运行多少次。 5.png 当我们请求本地的这个端口时 7.png 这个端口便会回应我们 8.png

:易错点 9.png

注意事项

  •  这些代码就是服务器代码,一般放在服务器上。
  •  path是不带查询参数的路径/x
  •  query是查询参数的对象形式{a:'1'}
  •  querystring是查询参数的字符串形式?a=1
  •  pathwithquery是查询参数的路径,一般不用
  •  response是请求对象
  •  response
  •  pathwithquery

代码逻辑

语法

  •  ``这种字符串里面可以回车
  •  ''这种字符串里面要回车只能用\n

逻辑

  • 每次收到请求都会把中间的代码执行一遍
  • 每请求一次,这个代码就会重新执行一次。console.log("便会发送这句话")为: " + pathwithquery);

6.png : Ctrl+c 可以把curl断开 Ctrl+/ 注释快捷键

我们可以if else 判断路径,并返回响应

  •  如果是已知路径,一般返回200 a.png
  •  如果是未知路径,一般返回404 b.png
  •  Content-Type表示内容的 类型/语法
  •  response.write()可以填写返回的内容
  •  response.end()表示响应可以发给用户

我们也写一个服务器程序

我们的第一个网页

  •  我们在/路径返回一个HTML内容 c.png
  •  然后在/x路径发挥一个css内容 d.png
  •  然后在/y路径返回一个js内容

e.png

注意事项

  •  Url里的后缀没有用,/y.css不一定是css内容
  •  Content-Type才是决定文件类型的关键

系统学习HTTP

体系化学习必须学会什么?

  1. 基础概念(搞清楚请求和响应)
  2. 如何调试(用的是Node.js,可以用log/debuger)
  3. 在哪里查资料(用的是Node.js,看node.js文档)
  4. 标准制定者是谁(HTTP规格文档:rfc 2612)

HTTP基础概念

请求

  •  请求动词 路径加查询参数 协议名/版本
  •  hest:域名或IP
  •  accept:text/html1
  •  content-type:请求体的格式
  •  回车
  •  请求体(也就是上传内容)

细节

  •  三部分:请求行、请求头、请求体
  •  请求动词有GET(用来获取内容)/POST(用来上传内容)/PUT/PATCH/DELETE等
  •  请求体在GET请求中一般为空
  •  文档位于RFC 2612 第五章
  •  大小写不敏感

响应

  •  协议名/版本 状态码 状态字符串
  •  content-Type:响应体的格式
  •  回车
  •  响应体(也就是下载内容)

细节

  •  三部分:状态行、响应头、响应体
  •  常见的状态码是考点
  •  文章位于RFC 2612 第六章

用curl构造请求

1.png

  •  设置请求动词

-X POST (注意大小写)(post用来上传内容) 2.png

  • 设置路径和询参数,直接在URL后面加

设置路径 3.png

设置查询参数 4.png

验证了锚点是不会发送到服务器 5.png

  • 设置请求头

-H 'Name:Value'或者 --header'Name:Value' (可以随意设置上限1000个) 6.png

  • 设置请求头

-d '内容' 或者 --header 'name:Value'

  • 设置请求体

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

curl构造请求完事后

用 node.js读取

  •  读取请求动词

request.method

  •  读取路径

request.url路径,带查询参数

path 纯路径,不带查询参数

query 只有查询参数

  •  读取请求头

requst.headers['Accept']

  •  读取请求体

比较复杂,暂且不学

用Node js设置响应

  • 设置响应状态码

response.statusCode=200(200可以随意改)

  • 设置响应头

response.setHeader('Content-Type','test/html');

  • 设置响应体

response.wirte(内容)

可追加内容

console.log调试大法 !!可以验证对错

不要相信自己 a.png 当第一种还找不出问题时,就用第二个更加详细找出问题所在 b.png

注:内容来自饥人谷