代码编织梦想

面试一年多,每当我问起面试者对HTTP的了解时,个个回答令我瞠目结舌,这些开发者都有3-5年的经验。请不要让我叫你野生程序员,是时候了解HTTP了,让我们当个正规军。

起因

面试官:请问你了解HTTP协议吗?

前端开发:这不是应该后端清楚的吗?

后端开发:这不是前端知道的吗?

面试官:……

我们先一本正经的来了解下HTTP(不包含传输层TCP),然后总结其中的精华回复面试官。

HTTP协议简介

HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)

  • 协议 协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。

  • 无状态 无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。

  • 客户端/服务端模型

编辑切换为居中

添加图片注释,不超过 140 字(可选)

五层网络模型

编辑切换为居中

添加图片注释,不超过 140 字(可选)

URL构成

用了这么久,你注意过吗?

编辑切换为居中

添加图片注释,不超过 140 字(可选)

协议内容

请求(Request)

客户端发送一个HTTP请求到服务端的格式:

  • 请求行

  • 请求头

  • 请求体

编辑切换为居中

添加图片注释,不超过 140 字(可选)

响应(Response)

服务端响应客户端格式:

  • 状态行

  • 响应头

  • 响应体

编辑切换为居中

添加图片注释,不超过 140 字(可选)

状态码

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

更详细的状态码可查看 HTTP状态码

但一般我们只需要知道几个常见的就行,比如 200,400,401,403,404,500,502.

请求方法

截止到HTTP1.1共有下面几种方法:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

请求和响应常见通用头

编辑切换为居中

添加图片注释,不超过 140 字(可选)

注意

Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。

常见的媒体格式类型如下:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

以application开头的媒体格式类型:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

常见请求头

编辑切换为居中

添加图片注释,不超过 140 字(可选)

常见响应头

编辑切换为居中

添加图片注释,不超过 140 字(可选)

总结

清楚的知道这些内容,不仅仅是为了应对面试官,而是能实实在在的提高自己的效率,这一点在前后端联调接口最明显,当你在应用中去请求其他接口或转发请求时这些也是要知道的。不然出现问题的概率会大大提高。

             资源获取:
大家 点赞、收藏、关注、评论啦 、 查看👇🏻👇🏻👇🏻 微信公众号获取联系方式👇🏻👇🏻👇🏻
精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻
每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_63437643/article/details/130721801

面试题30天打卡-day24-爱代码爱编程

1、Redis 为什么快? Redis 之所以快,主要是因为它具有以下特点: 纯内存操作:Redis 的数据存储在内存中,因此读写速度非常快,而无需像传统数据库一样从硬盘读取和写入数据。与此同时,Redis 支持异步持久

公司没有一个会自动化测试的,果断离职了····-爱代码爱编程

面试问到离职原因,我想这是很多面试者的痛,包括我自己,曾经也被离职原因所坑过。 面试回答离职原因简直特么就是巨坑! 话说最近我面试了个两三年经验的测试工程师,离职原因说出来就是砸自己的脚,真是感慨万千啊,且听我慢慢道来。 我让他做个简单的自我介绍,叽里咕噜一大堆,持续好些分钟,我实在没耐心听下去了,但也不好强行打断,中间趁他换气还是插了句话让他停止自

1.高级面试-mysql、redis、特殊场景、java-爱代码爱编程

本文目录如下: 高级面试一、MySQLB+树有什么优点? image.pngInnoDB 和 MyISAM 的索引结构有什么区别 (聚簇索引-非聚簇索引)? 二、RedisRedis 如何保证存

日志模块封封装:单例模式+策略模式+构建者模式+bugly_日志模块用单例实现吗-爱代码爱编程

日志模块封装:单例模式+策略模式+构建者模式+bugly 一.单例模式+策略模式+构建者模式二.日志模块封装1.日志等级:LoggerLevel枚举类2.日志输出策略:LoggerStrategy枚举类3.IL