news 2026/7/19 13:53:51

@PostMapping 注解中的 consumes 属性

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
@PostMapping 注解中的 consumes 属性

@PostMapping注解中的consumes属性,用于指定该接口能够处理的请求的Content-Type(媒体类型)。当客户端发来的请求头Content-Type不匹配时,服务器会返回415 Unsupported Media Type错误。

你提到的consumes = "multipart/form-data",则明确告诉 Spring:这个接口只接收文件上传类的表单数据

🎯 核心作用与验证机制

consumes的核心作用是媒体类型映射和过滤。Spring 会根据它来匹配请求,只有当请求的Content-Type与你指定的类型一致时,才会将请求派发到对应的方法。其验证逻辑是:

  • 指定单一类型@PostMapping(consumes = "multipart/form-data"),要求请求头必须完全等于multipart/form-data

  • 指定多种类型@PostMapping(consumes = {"multipart/form-data", "application/json"}),请求头满足其中任意一种即可。

  • 使用通配符@PostMapping(consumes = "multipart/*"),匹配所有multipart/子类型。

📤 文件上传场景:multipart/form-data

当你在表单中上传文件时,浏览器会自动将enctype设为multipart/form-data,这意味着请求体会被分割成多个部分(Part),每个表单字段都是一个独立的部分。在 Spring Boot 中,通常会配合@RequestPart来接收文件和数据。

java

@PostMapping(value = "/upload", consumes = "multipart/form-data") public String uploadFile( @RequestPart("file") MultipartFile file, @RequestPart("metadata") String metadata) { // file 包含文件数据,metadata 是普通 JSON 字符串 return "success"; }

⚠️ 为何consumes不能完全信任?

关键点consumes的匹配仅基于请求头Content-Type,但请求头是客户端可以随意构造的。因此,它并不能作为安全过滤手段,核心校验仍需在业务逻辑中完成。

📚 其他常用媒体类型

媒体类型consumes适用场景
JSONapplication/jsonRESTful API,前后端分离最常用
XMLapplication/xml旧系统或特定行业接口
表单提交application/x-www-form-urlencoded普通 HTML 表单,键值对格式
文件上传multipart/form-data文件上传,支持二进制数据
纯文本text/plain接收纯文本内容

💎 总结

consumes是 Spring MVC 中处理请求内容协商的重要机制。它能让你的接口职责更清晰,避免因Content-Type混乱而导致的错误。使用时要记住:它只负责路由匹配,不负责数据校验

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 13:53:13

HTTPotion源码解析:理解Elixir宏与模块设计的艺术

HTTPotion源码解析:理解Elixir宏与模块设计的艺术 【免费下载链接】httpotion [Deprecated because ibrowse is not maintained] HTTP client for Elixir (use Tesla please) 项目地址: https://gitcode.com/gh_mirrors/ht/httpotion HTTPotion是一款基于ibr…

作者头像 李华
网站建设 2026/7/19 13:48:20

从安装到实战:aiolimiter异步限流工具的完整使用指南

从安装到实战:aiolimiter异步限流工具的完整使用指南 【免费下载链接】aiolimiter An efficient implementation of a rate limiter for asyncio. 项目地址: https://gitcode.com/gh_mirrors/ai/aiolimiter 在当今的异步编程世界中,处理并发请求时…

作者头像 李华
网站建设 2026/7/19 13:48:03

B2405S-1WR3 适配优选 DB1-24S05S,1W 隔离 DC-DC 模块电源参数全解析

在工控、仪器仪表、物联网采集终端等硬件研发项目中,24V 母线转 5V 隔离供电的板级直流电源模块属于标准化通用器件,绝大多数整机供电架构会采用前端 AC-DC 整流稳压、后端 DC-DC 隔离降压的两级电源方案,隔离电源承担高低压回路分割、阻断共…

作者头像 李华
网站建设 2026/7/19 13:47:24

Windows风扇精准控制终极指南:5步打造完美散热系统

Windows风扇精准控制终极指南:5步打造完美散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…

作者头像 李华
网站建设 2026/7/19 13:47:05

GHelper终极指南:如何用轻量化工具彻底解放华硕笔记本性能

GHelper终极指南:如何用轻量化工具彻底解放华硕笔记本性能 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook…

作者头像 李华
网站建设 2026/7/19 13:47:00

为什么fluxsort在排序算法竞赛中表现卓越?

为什么fluxsort在排序算法竞赛中表现卓越? 【免费下载链接】fluxsort A fast branchless stable quicksort / mergesort hybrid that is highly adaptive. 项目地址: https://gitcode.com/gh_mirrors/fl/fluxsort 在数据处理领域,排序算法的性能直…

作者头像 李华