AngularJS使用$http调用.NET Core API返回400 Bad Request错误如何解决
问题原因
你遇到的400错误是因为前后端的请求体格式不匹配:
- 前端传递的是完整JSON对象
{"transactionJson": "hello"} - 后端
[FromBody]直接绑定string类型参数时,.NET Core的模型绑定要求请求体为原始JSON字符串(即直接传"hello",外层不带对象包装),格式不匹配导致绑定失败,返回400。
修复方案
有两种可行修复方式,按需选择即可:
方案1:调整后端接收逻辑(更通用,适合后续参数扩展)
新增一个参数接收模型类:
public class TransactionRequest { public string TransactionJson { get; set; } }
修改接口方法的参数声明:
[Route("~/api/message/transaction/{transactionId}")] [HttpPost] public async Task<ActionResult<DeviceEventsTransactionmsg>> PostTransaction([FromBody] TransactionRequest request) { // 业务逻辑中通过 request.TransactionJson 取值 }
方案2:调整前端传值格式(适合参数固定为单个字符串的场景)
修改AngularJS的$http请求参数,直接传递字符串值,不要包装为对象:
$http({ method: 'POST', url: '/api/message/transaction/' + this.transaction.id, data: "hello", // 直接传字符串,不要用对象包装 headers: {'Content-Type': 'application/json'} // 显式指定请求类型为JSON }) .then(function (response) { var r = response; })
内容的提问来源于stack exchange,提问作者Chris Halcrow
相关产品推荐
相关产品推荐

