分为3部分:
nodejs
如何处理http 请求
搭建开发环境
接口开发( 暂不链接数据库,暂不考虑登录,先返回假数据,先把前后端调通,调通后再连数据库用真数据,最后再考虑登录的问题)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6c87679ff7728bd47b84aee611e9c4ab.png)
1、http请求概述
问: 从输入url 到看到页面,中间发生了什么
- 浏览器行为: DNS 解析(域名解析为ip地址,根据ip找到服务器),(客户端和服务端)建立TCP连接(三次握手),发送http请求
- 服务器行为: 服务端(server端)接收到http请求,处理,并返回(这一步是本节的主要内容,我们怎么接收请求,处理请求,并返回结果)
- 浏览器行为: 客户端(主要指浏览器)接收到返回数据,处理数据(html、css、js 渲染页面,控制页面)
例如:以访问百度为例:
- dns解析:根据域名找到对应的ip地址(先从浏览器缓存里找 --》 然后找host – 》 然后去dns解析直到找到 域名对应的ip为止);
注:因为百度产品比较大,全国各地的用户可能都有,所以用户看到的ip地址可能不一样,自己今天看和明天看也可能不一样。
域名解析的具体过程:
1.浏览器或操作系统本身有缓存,例如baidu.com这个域名有缓存,如果缓存过期或者第一次访问没有环境,浏览器会去域名供应商那里通过域名去dns服务器去获取地址。
- 然后tcp建立连接,通过3次握手(1. 客户端询问服务器,服务器是否可用。2. 服务器告诉客户端,服务可用。 3. 客户端回复:收到,即将访问)
- 发送http请求
1.1 request headers
request headers 里是客户端往服务端发送的一些信息。下图看到的是浏览器给我们格式化后的信息,view source里是我们真正发送的文本代码(一段字符串)。
2、nodejs 处理http请求
1、 get 请求 和querystring
get请求
,就是客户端向服务端获取数据,eg:查询博客列表- 一般通过
querystring
来传递数据,eg:a.html?a=100&b=200
浏览器直接访问
,就发送get请求
const http = require('http');
const querystring = require('querystring'); //nodejs的模块,我们利用这个模块querystring的parse方法,把url里?后的字符串 转为对象
const server = http.createServer((req,res)=>{
const url = req.url; //请求的完整的url
req.query = querystring