在浏览器中输入网址,回车后会发生什么
- 首先是解析网址到 IP 地址,包括浏览器可能会有网址到 IP 地址的缓存,以及本地的 hosts 文件如果有相关记录会直接使用,如果都没有记录,则会向域名服务器发查询请求,域名服务器有层级结构,我们会先向最底层域名服务器请求,如果服务器中也没有记录,会一层层向上请求,得到结果后返回浏览器。
- 然后是向 IP 地址发送请求,具体说是向 IP 的特定端口发送请求,一般 http 协议是 80 端口,https 协议是 443 端口。这一步会涉及网络 7 层模型,及各层的各种协议,比如 TCP 协议,IP 协议,ICMP 协议等等。
- IP 地址对应的服务器收到请求后,会执行相应的动作,这里具体的动作与服务端的架构有关,比如如果是请求静态资源,可能直接返回,如果是某个后端服务接口,还可能向后转发请求等等,最终,会返回一个响应。
- 浏览器收到响应后,也会执行相应的逻辑,如果是静态资源,如 HTML 或 CSS 文件,会解析文件并渲染页面,如果是 json 格式响应体,通常由 js 代码接收并处理。
网络 7 层模型都是哪 7 层
从上层向下分别是:
- 应用层
- 会话层
- 表示层
- 传输层
- 网络层
- 数据链路层
- 物理层
现在使用比较广泛的是 TCP/IP4 层模型:
- 应用层
- 传输层
- 网络层
- 物理层
常用状态码的含义:401,403,404,500
- 401:未登录
- 403:已登陆,但没有权限
- 404:请求的资源不存在
- 500:服务端产生内部错误
按照 REST 风格设计一个学生管理系统的路由
定义一个学生实体,对该实体分别定义增删改查的路由:
- 增加学生:POST 方法,路由:/student,学生信息放到请求体中
- 删除学生:DELETE 方法,路由:/student/{studentId},没有请求体
- 修改学生信息:PUT 方法,路由:/student/{studentId},要修改的内容放到请求体中
- 查询学生信息:GET 方法,路由:/student/{studentId},没有请求体,也不加参数
- 批量查询学生列表:GET 方法,路由:/student,通过 query 参数增加筛选条件
GET 方法和 POST 方法的区别
- 从使用场景上看,GET 通常用来获取资源,POST 通常用来提交资源
- GET 方法不能有请求体,POST 方法可以有,或者说,GET 方法既是带了请求体,服务端也大概率不处理
- GET 方法把参数放到 query 里,POST 方法把参数放到请求体里,这也导致了 GET 方法携带的参数长度会受请求长度限制,而 POST 方法通常没有限制,请求体可以很大
- GET 方法通常来说比 POST 方法更不安全,因为参数是直接拼接在 URL 后的
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于