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来接收文件和数据。javaPostMapping(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混乱而导致的错误。使用时要记住它只负责路由匹配不负责数据校验。