400 bad Request -- 參數不當引發的錯誤


最近在為自己所在的演講俱樂部開發一個小程序,后端是用.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){
}
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM