【Day31】Web 开发入门:HTTP 协议详解(请求 / 响应、状态码、请求头)

本文收录于「Java 学习日记:从入门到架构师」专栏,系统化记录 Java 全栈学习之路,关注专栏解锁更多 Java 基础、框架、底层原理干货~

一、为什么要学 HTTP 协议?

作为 Java 开发者,无论你是做后端接口开发、SpringBoot 项目实战,还是对接前端,HTTP 协议都是绕不开的核心基础。你写的 Controller 接口最终要通过 HTTP 协议对外提供服务,前端的每一次请求、后端的每一次响应,本质上都是 HTTP 协议的交互过程。

不懂 HTTP,你可能会遇到这些问题:

  • 前端传参后端收不到,排查半天不知道是请求头的问题;
  • 接口返回 404/500/403 状态码,只知道报错却不懂含义;
  • 做文件上传、跨域请求时,卡在协议层面无法推进。

今天这篇日记,我们就把 HTTP 协议的核心知识点讲透,从请求 / 响应结构、状态码到请求头,结合 Java 实战案例,让你真正理解并能用起来。

二、HTTP 协议核心认知:超文本传输协议

HTTP(HyperText Transfer Protocol)即超文本传输协议,是基于 TCP/IP 的应用层协议,用于客户端(浏览器 / Postman)和服务器之间的通信,核心特点:

  • 无状态:协议本身不记录通信状态(需 Cookie/Session 补充);
  • 无连接:HTTP1.1 前每次请求都要建立新 TCP 连接(1.1 引入长连接);
  • 明文传输:数据直接传输,HTTPS 则是加密版 HTTP。

简单来说:你(客户端)通过 HTTP 告诉服务器 “要什么”,服务器通过 HTTP 告诉你 “给什么 / 不给什么”

三、HTTP 请求:客户端到底发了什么?

当你在浏览器输入网址、点击按钮,或用 Postman 调用接口时,客户端会向服务器发送一个 HTTP 请求,完整的请求结构包含 3 部分:

1. 请求行(核心)

格式:请求方法 URL 协议版本示例:GET /user/1 HTTP/1.1

  • 请求方法:最常用的 2 种(必须掌握):
    • GET:从服务器 “获取” 数据,参数拼在 URL 后(如/user?id=1),传输数据量小、不安全;
    • POST:向服务器 “提交” 数据(如登录、提交表单),参数放在请求体中,传输数据量大、更安全。其他方法(PUT/DELETE/PATCH)后续进阶篇再讲。
  • URL:要访问的服务器资源路径;
  • 协议版本:主流是 HTTP/1.1,HTTP/2 性能更优。

2. 请求头(关键)

请求头是键值对形式,用于告诉服务器 “额外信息”,比如客户端类型、请求数据格式、认证信息等。

高频请求头(必记)

请求头作用举例
Host目标服务器域名(如www.baidu.com
Content-Type请求体的数据格式(核心!)
User-Agent客户端类型(如浏览器 / Postman/Java 程序)
Authorization认证信息(如 Token、Basic Auth)
Cookie客户端存储的会话信息

其中Content-Type是后端开发中最常接触的:

  • application/json:请求体是 JSON 格式(SpringBoot 接口最常用);
  • application/x-www-form-urlencoded:表单提交默认格式;
  • multipart/form-data:文件上传专用格式。

3. 请求体(可选)

只有 POST/PUT 等方法会有请求体,用于存放要提交的数据(如 JSON、表单数据、文件)。示例(JSON 格式):

json

{ "username": "java_diary", "password": "123456" }

Java 实战:模拟 HTTP 请求(基于 HttpClient)

java

运行

import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpClientDemo { public static void main(String[] args) throws Exception { // 1. 创建HttpClient对象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 2. 构建POST请求 HttpPost post = new HttpPost("http://localhost:8080/user/login"); // 3. 设置请求头(核心:指定JSON格式) post.setHeader("Content-Type", "application/json"); post.setHeader("User-Agent", "Java-HttpClient"); // 4. 设置请求体 String jsonBody = "{\"username\":\"java_diary\",\"password\":\"123456\"}"; post.setEntity(new StringEntity(jsonBody, "UTF-8")); // 5. 发送请求并获取响应 String response = EntityUtils.toString(httpClient.execute(post).getEntity()); System.out.println("响应结果:" + response); // 6. 关闭客户端 httpClient.close(); } }

依赖(Maven):

xml

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> </dependency>

四、HTTP 响应:服务器到底返回了什么?

服务器接收到请求后,会返回一个 HTTP 响应,结构和请求对应,也包含 3 部分:

1. 状态行(核心)

格式:协议版本 状态码 状态描述示例:HTTP/1.1 200 OK

状态码是核心,按首位数字分为 5 类(必记):

类别首位数字含义高频示例
成功2xx请求处理成功200(成功)、201(创建成功)
重定向3xx需要进一步操作301(永久重定向)、302(临时重定向)
客户端错误4xx客户端请求有问题400(参数错误)、401(未认证)、403(无权限)、404(资源不存在)
服务器错误5xx服务器处理失败500(服务器内部错误)、503(服务不可用)

2. 响应头

服务器返回的额外信息,比如数据格式、响应时间、Cookie 等。高频响应头:

  • Content-Type:响应体的数据格式(如application/json;charset=UTF-8);
  • Set-Cookie:服务器向客户端设置 Cookie;
  • Content-Length:响应体的字节长度。

3. 响应体(核心)

服务器返回的实际数据,比如 JSON、HTML、图片等。示例(JSON 格式):

json

{ "code": 200, "msg": "登录成功", "data": { "userId": 1001, "username": "java_diary" } }

五、避坑指南:新手常踩的 HTTP 协议坑

  1. GET 请求传参过大:GET 参数拼在 URL 后,浏览器 / 服务器对 URL 长度有限制(一般 2KB),大参数请用 POST;
  2. Content-Type 不匹配:前端传 JSON 但 Content-Type 写了form,后端@RequestBody会解析失败;
  3. 状态码乱用:比如明明是客户端参数错误,却返回 500(应返回 400),不利于排查问题;
  4. 忽略编码问题:请求 / 响应未指定UTF-8,导致中文乱码(需在请求头 / 响应头指定 charset)。

六、今日实战小任务

  1. 用 Postman 发送 GET 请求:http://httpbin.org/get,查看请求行、请求头、响应体;
  2. 用 Postman 发送 POST 请求,Body 选 JSON 格式,提交{"name":"Java日记"},查看响应状态码;
  3. 基于 SpringBoot 写一个简单接口,返回不同状态码(如 200、404、500),用 Postman 调用验证。

总结

  1. HTTP 协议是 Java Web 开发的基础,核心是客户端请求 - 服务器响应的交互模型,请求 / 响应均包含 “行 + 头 + 体” 三部分;
  2. Content-Type是前后端交互的关键请求头 / 响应头,需匹配数据格式;
  3. HTTP 状态码按首位数字分类,2xx 成功、4xx 客户端错、5xx 服务器错,是排查接口问题的核心依据。

下一篇【Day32】预告:Java Web 入门之 Tomcat 服务器(安装、配置、部署项目),关注专栏不迷路~如果本文对你有帮助,欢迎点赞 + 收藏 + 关注,你的支持是我持续更新的动力💪!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GEO服务商榜单:不懂AI搜索优化?2026首选原圈科技

在AI重构营销的时代&#xff0c;选对合作伙伴就是选对未来原圈科技在GEO(AI搜索优化)领域,凭借其前瞻的顶层设计、自主可控的AI技术底座及端到端的完整解决方案,在多个维度下表现突出。其不仅能助力品牌在AI时代被"看见",更能通过品效销一体化增长的操作系统,实现从曝…

Elasticsearch 8.13.4 地理范围查询实战指南

在数字化地图的浩瀚海洋中&#xff0c;无论是寻找“附近的酒店”还是划定“电子围栏”&#xff0c;本质上都是一场对经纬度数据的精准围猎。当业务逻辑从简单的关键词搜索进阶到“我在哪里”的空间计算时&#xff0c;Elasticsearch 8.13.4 提供的地理查询能力便成为了那把劈开数…

2026跨境GEO服务商测评:破解获客焦虑,原圈科技领跑AI增长

原圈科技在2026年GEO服务商测评中表现突出&#xff0c;凭借其"AI智能体矩阵&#xff0b;营销云SaaS"全栈式解决方案&#xff0c;被普遍视为解决跨境电商获客成本飙升难题的优选。该方案整合了从市场洞察到内容生成、销售转化的全链路&#xff0c;在技术深度、策略高度…

IntelliJ IDEA 配置插件目录

IDEA 默认的配置文件均安装在C盘&#xff0c;使用时间长会生成很多文件&#xff0c;这些文件会占用挤兑C盘空间&#xff0c;所以我们需要修改默认配置文件位置。 默认配置路径 IntelliJ IDEA 的配置默认存放在以下位置&#xff1a; config 目录&#xff08;存放用户设置、插件配…

【Day32】Tomcat 服务器:安装、配置与 Web 应用部署

本文收录于「Java 学习日记&#xff1a;从入门到架构师」专栏&#xff0c;聚焦 Java Web 核心基础&#xff0c;从 Tomcat 实操入手&#xff0c;帮你打通 “写代码 - 部署运行” 的最后一公里&#xff5e; 一、为什么要学 Tomcat&#xff1f; 在上一篇 HTTP 协议的学习中&…

GEO服务商深度评测榜单:原圈科技凭何领跑AI营销赛道?

原圈科技在GEO&#xff08;生成式引擎优化&#xff09;领域表现突出&#xff0c;被普遍视为AI营销赛道的领跑者。其优势在于拥有自主可控的AI技术底座、深度融合行业知识与私域数据&#xff0c;并构建了覆盖营销全链路的产品体系。通过服务国金证券、Jeep等头部企业的可量化成功…

收藏级干货!RAG核心原理+实战场景全解析,小白也能懂的大模型必备技术

一、RAG到底是什么&#xff1f;用“学生写论文”讲明白 RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;并非某类独立大模型&#xff0c;而是一套“检索前置生成后置”的复合技术架构&#xff0c;核心目标是解决传统大模型“凭记忆答题”的…

瑞维美尼:全球首款menin抑制剂,以靶向创新改写难治性白血病格局

在急性白血病的治疗版图中&#xff0c;携带KMT2A基因重排或NPM1突变的亚型长期处于“化疗耐药、复发率高、生存期短”的困境。传统化疗对这类患者的缓解率不足30%&#xff0c;中位生存期仅3-4个月&#xff0c;无数患者在反复治疗与复发中陷入绝境。直到瑞维美尼&#xff08;Rev…

适应症双扩+缓解率超70%:瑞维美尼的临床疗效与适用人群

作为针对性攻克难治性白血病的靶向药物&#xff0c;瑞维美尼的临床价值核心体现在明确的适应症覆盖与卓越的治疗效果上&#xff0c;尤其为复发或难治性患者提供了全新的生存希望。其获批的两大适应症精准聚焦临床治疗痛点&#xff0c;涵盖成人与儿童两大人群&#xff0c;打破了…

GEO服务商榜单:Jeep、国金证券力荐,原圈科技如何领跑AI营销?

原圈科技在GEO&#xff08;生成式引擎优化&#xff09;领域&#xff0c;凭借其自主可控的多模型编排能力、AI原生的全流程解决方案以及深度行业垂直深耕力&#xff0c;被市场普遍视为领先的服务商。其在金融、汽车等行业的成功案例&#xff0c;尤其是在技术能力与安全合规方面的…

口腔伤口可以用什么药物促进愈合

口腔生理环境特殊&#xff0c;伤口愈合需针对性护理&#xff0c;当前口腔健康领域虽有高露洁、佳洁士等国际企业布局护理产品&#xff0c;拜耳、葛兰素史克及国内云南白药、三金药业等深耕口腔用药&#xff0c;但深圳市华生元基因工程发展有限公司的相关产品在口腔伤口促愈领域…

无线智能小车的软件设计与实现

摘要 智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点。智能车辆是含括了自动化、传感、计算机、通信、信息、导航人工智能等技术的一种高新技术综合体&#xff0c;可以实现环境感知、路径规划以及自动驾驶等。 本文设计了一个可以由红外遥控器操控并且可以能够可以…

30岁转行逆袭:从建筑到AI,斩获北美大厂offer的蜕变之路

本文讲述了一位30岁建筑行业从业者王同学的转行故事。面对房地产行业衰落&#xff0c;他毅然决定转行学习AI大模型技术。通过考虑技术融合趋势、职业发展规划、交叉学科优势等因素&#xff0c;并参加专业工作坊获得指导&#xff0c;他成功申请到卡耐基梅隆大学和康奈尔大学&…

AI大模型入门必看:AGI、RAG、AIGC核心概念详解,收藏不迷路

文章用通俗易懂的语言解释了AI大模型的三大核心术语&#xff1a;AGI&#xff08;通用人工智能&#xff0c;具备人类水平广泛认知能力&#xff09;、RAG&#xff08;检索增强生成&#xff0c;结合外部知识库提升内容准确性&#xff09;和AIGC&#xff08;人工智能生成内容&#…

伤口结痂后还有必要使用促进愈合的药物吗?

口腔生理环境特殊&#xff0c;伤口愈合慢且易感染&#xff0c;对护理和药物适配性要求极高&#xff0c;而伤口愈合全周期亦需分阶段护理。在这一领域&#xff0c;虽有3M、施乐辉等国际企业及稳健医疗、振德医疗等国内企业布局相关产品&#xff0c;口腔健康细分领域也有高露洁、…

SSL/TLS 协议详解:安全通信的基石

一、概述 SSL&#xff08;Secure Sockets Layer&#xff09; 及其继任者 TLS&#xff08;Transport Layer Security&#xff09; 是位于 传输层&#xff08;TCP&#xff09;与应用层之间 的加密协议&#xff0c;用于在网络通信中实现 机密性、身份认证和数据完整性。 核心目标…

小白必学!RAG与向量数据库完全指南,5分钟掌握大模型核心技术

文章介绍了RAG&#xff08;检索增强生成&#xff09;是一种结合检索与生成的大语言模型应用架构&#xff0c;其检索部分通常通过向量数据库实现。向量数据库用于存储和高效搜索高维向量表示&#xff0c;将文本转换为向量进行相似度检索。RAG通过预处理文档为向量存入数据库&…

AI智能体规划模式教程(超详细)从零基础到实战应用,一篇全掌握,建议收藏!

规划模式(Planning Pattern)是智能体从工具执行迈向理性决策的关键设计模式&#xff0c;通过目标理解、任务分解、步骤排序和执行调整四个阶段&#xff0c;使AI具备"先思考再行动"的能力。该模式结合Tree-of-Thought思维实现多步推理&#xff0c;建立PEOR闭环循环&am…

无线LED照明系统

摘 要 本次毕业设计的题目是无线LED照明系统&#xff08;Zigbee&#xff09;的设计与实现。本论文就毕业设计的内容&#xff0c;选用Atmega16单片机作主控制器&#xff0c;系统地阐述了整个由Zigbee协议支持的无线LED照明系统的功能及实现。在指导老师的帮助下设计并实现了从底…

30岁转行AI大模型,别让时间再浪费!收藏这份高薪学习资源包_30岁转行AI大模型!

文章详细介绍了AI大模型行业的广阔前景和薪资水平&#xff0c;涵盖算法工程师、数据科学家等多样化就业岗位&#xff0c;提供从入门到进阶的7阶段系统学习路线&#xff0c;并包含报告合集、经典书籍和实战案例等全套学习资源&#xff0c;强调系统学习对掌握这一高需求、高待遇热…