Web Api 400 bad Request -- 参数不当引发的问题

在使用.NET Core构建后端API并与微信小程序交互时,遇到400 Bad Request错误。问题源于POST请求的参数处理。通过调整前端参数发送方式,将参数改为强类型,解决了这个问题。前端原本发送的是简单类型,改为复合类型后,请求成功。此问题的解决方案可能涉及.NET Core API对接微信小程序的特定要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在为自己所在的演讲俱乐部开发一个小程序,后端是用.NET CORE 来实现,今天遇到了一个奇怪的问题,一直报400 bad request请求错误。

前端代码:

let url = behavior=='like'?'like':'like/cancel';
this.request({
  url:url,
  method:'POST',
  data:{
    id:likeid
  }
})

后端代码

   [HttpPost]
   public async Task<IActionResult> doLike([FromBody]int like_id)
    {
        return await Task.Run(() =>
        {
            
            jService.UpdateLikeStatus(model.Id, true);
            return Ok();
        });
    }

然后奇怪的是一直报错,400-Bad Request,最后不断调试,还把参数请求属性改成了[FromHeader], 结果发现前端的代码能跳到这个方法里面,只是like_id一直未0 。

最后无奈,推测是不是POST参数是不是需要对一个复合类型(非简单类型,比如int ,string等)。最后把参数请求改成了强类型,竟然可以了!

[HttpPost]
public async Task<IActionResult> doLike([FromBody] Journal_Member_Likes model)
{
    return await Task.Run(() =>
    {
        
        jService.UpdateLikeStatus(model.Id, true);
        return Ok();
    });
}

@||400x0

可以看到传递进来的Id跟前端是一样的了。

事后在博客园翻了一下文章,发现有个人遇到的情况跟我是一样的。不过他是通过修改基本数据类型为object类型来达到传参的目的:

public string PostTest([FromBody]object value)
{
    return "Got it!";
}

以及还有评论说:

//单个参数的情况下:
jquery这样提交:$.ajax({
	url:"http://127.0.0.1:18170/api/coderecord",
	type:"post",
	data:{"":"13777777777"},
	success:function(data){
	}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值