You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postman请求体发送整数列表?解决415媒体类型错误

问题分析与解决方案

核心问题

你的代码与请求体结构不匹配,加上参数绑定逻辑错误,直接导致了415 Unsupported Media Type错误:

  1. @RequestBody使用错误:你将@RequestBody标注在List<Integer> accounts上,Spring会默认期望请求体是一个纯整数数组(比如[1,2,3]),但你实际发送的是包含accounts和message两个字段的JSON对象,结构完全不匹配。
  2. message参数无绑定规则:String message没有任何绑定注解,Spring无法从请求体中识别并解析这个参数。
  3. 可能的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请求配置

  1. 请求方法选POST,URL填写http://你的服务域名/api/telegram/sendCustomMessage
  2. 切换到Body标签,选择raw,格式选JSON
  3. 请求体保持你原来的内容:
{
    "accounts": [1, 2, 3],
    "message": "Custom Message"
}
  1. 检查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配置

  1. URL改为http://你的服务域名/api/telegram/sendCustomMessage?message=Custom%20Message(或在Params标签中添加message参数)
  2. Body选择raw->JSON,请求体写:
[1, 2, 3]
  1. 同样确保Headers包含Content-Type: application/json

内容的提问来源于stack exchange,提问作者Danil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:52:57