HTTP请求与响应

HTTP请求与响应

2026年5月17日·#javawebai/后端基础前端/HTTP/Java·622 字 3 分钟
浏览量加载中...
AI 摘要- DeepSeek

HTTP请求协议与响应协议的格式、获取/设置请求/响应数据的方法及常见状态码

HTTP请求与响应#

定义#

HTTP协议分为请求协议和响应协议。请求协议规定了浏览器将数据发送到服务器的格式,包括请求行、请求头、请求体。响应协议规定了服务器将数据返回给浏览器的格式,包括响应行、响应头、响应体。

语法/用法#

请求协议格式#

  • 请求行:请求方式 资源路径 协议/版本(如:GET /brand/findAll?name=OPPO&status=1 HTTP/1.1)
  • 请求头:key: value 格式,常见请求头如下:
请求头含义
Host请求的主机名
User-Agent浏览器版本
Accept能接收的资源类型
Accept-Language偏好的语言
Accept-Encoding支持的压缩类型
Content-Type请求主体的数据类型
Content-Length数据主体的大小(字节)
  • 请求体:存储POST请求参数,与请求头之间有空行分隔

GET与POST请求区别#

区别方式GET请求POST请求
请求参数在请求行中(URL可见)在请求体中
请求参数长度有限制无限制
安全性较低相对较高

响应协议格式#

  • 响应行:协议/版本 响应状态码 状态码描述(如:HTTP/1.1 200 OK)
  • 响应头:常见响应头有 Content-Type、Content-Length、Content-Encoding、Cache-Control、Set-Cookie
  • 响应体:存储响应数据,与响应头之间有空行分隔

获取请求数据(服务端)#

@RestController
public class RequestController {
@RequestMapping("/request")
public String request(HttpServletRequest request){
//1.获取请求参数
String name = request.getParameter("name");
String age = request.getParameter("age");
//2.获取请求路径
String uri = request.getRequestURI();
String url = request.getRequestURL().toString();
//3.获取请求方式
String method = request.getMethod();
//4.获取请求头
String header = request.getHeader("User-Agent");
return "request success";
}
}

设置响应数据#

@RestController
public class ResponseController {
@RequestMapping("/response")
public void response(HttpServletResponse response) throws IOException {
response.setStatus(401);
response.setHeader("name","itcast");
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("<h1>hello response</h1>");
}
@RequestMapping("/response2")
public ResponseEntity<String> response2() {
return ResponseEntity
.status(401)
.header("name","itcast")
.body("<h1>hello response</h1>");
}
}

常见场景#

  1. 服务端根据请求头中的User-Agent判断浏览器类型,处理浏览器兼容问题
  2. 前后端分离项目中通过Content-Type指定JSON格式传输数据
  3. 通过Cache-Control控制浏览器缓存策略

注意事项#

  1. 响应状态码和响应头通常不需要手动设定,服务器会根据请求处理逻辑自动设置
  2. Web服务器(Tomcat)已对HTTP协议数据进行封装(HttpServletRequest / HttpServletResponse),程序员无需直接操作协议

相关链接#


附录:常见状态码#

状态码含义
200客户端请求成功
404请求资源不存在
500服务端发生不可预期的错误

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# AI绘图1# AI辅助开发2# Ajax7# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc4# CSS10# DeepSeek6# deepseek2# DELETE1# Docker5# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML9# HTTP10# ImageManager1# Java23# java13# JavaScript11# JavaWeb113# JDBC7# JSON2# JUnit1# LangChain25# Linux4# Logback1# Maven17# Muse Spark1# Mybatis1# MyBatis18# MySQL45# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python70# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot37# SpringMVC5# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue20# Waline3# Web3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端52# 动态1# 动漫1# 包1# 单词2# 博客8# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 后端48# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 实战4# 对象1# 导航栏1# 工具2# 布局2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程2# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常95# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试3# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 表单1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部署11# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 项目实战11# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]