如何在Postman请求体发送整数列表?解决415媒体类型错误
问题分析与解决方案
核心问题
你的代码与请求体结构不匹配,加上参数绑定逻辑错误,直接导致了415 Unsupported Media Type错误:
- @RequestBody使用错误:你将
@RequestBody标注在List<Integer> accounts上,Spring会默认期望请求体是一个纯整数数组(比如[1,2,3]),但你实际发送的是包含accounts和message两个字段的JSON对象,结构完全不匹配。 - message参数无绑定规则:
String message没有任何绑定注解,Spring无法从请求体中识别并解析这个参数。 - 可能的Content-Type缺失:如果Postman请求未设置
Content-Type: application/json,Spring也会返回415错误。
正确实现方式
步骤1:创建请求DTO类
由于你的请求包含两个字段(整数列表和消息文本),需要定义一个DTO类来映射整个请求体:
public class CustomMessageRequest { private List<Integer> accounts; private String message; // 生成getter、setter方法(也可使用Lombok的@Data注解简化) public List<Integer> getAccounts() { return accounts; } public void setAccounts(List<Integer> accounts) { this.accounts = accounts; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
步骤2:修改Controller方法
将@RequestBody标注在DTO类参数上,让Spring正确解析整个请求体:
@RestController @CrossOrigin("*") @RequestMapping("/api/telegram") public class TelegramBotController { private final TelegramService telegramService; @Autowired public TelegramBotController(TelegramService telegramService) { this.telegramService = telegramService; } @PostMapping("/sendCustomMessage") public ResponseEntity<Void> sendCustomMessage( @RequestBody CustomMessageRequest request ) { // 通过request对象获取参数 // telegramService.sendGroupMessageByAccountIdList(request.getAccounts(), request.getMessage()); return ResponseEntity.ok().build(); } }
步骤3:Postman请求配置
- 请求方法选
POST,URL填写http://你的服务域名/api/telegram/sendCustomMessage - 切换到Body标签,选择
raw,格式选JSON - 请求体保持你原来的内容:
{ "accounts": [1, 2, 3], "message": "Custom Message" }
- 检查Headers中是否存在
Content-Type: application/json(Postman选择JSON格式后会自动添加,也可手动确认)
临时替代方案(不推荐用于复杂场景)
如果不想创建DTO类,可将message作为URL请求参数传递,此时请求体直接用纯整数数组:
修改Controller方法
@PostMapping("/sendCustomMessage") public ResponseEntity<Void> sendCustomMessage( @RequestBody List<Integer> accounts, @RequestParam String message ) { // 直接使用accounts和message参数 return ResponseEntity.ok().build(); }
Postman配置
- URL改为
http://你的服务域名/api/telegram/sendCustomMessage?message=Custom%20Message(或在Params标签中添加message参数) - Body选择
raw->JSON,请求体写:
[1, 2, 3]
- 同样确保Headers包含
Content-Type: application/json
内容的提问来源于stack exchange,提问作者Danil
相关产品推荐
相关产品推荐

