C# REST API接收Post请求返回Null问题求助
解决Web API接口返回Null的问题
你遇到的问题是因为[FromBody]绑定简单类型时的规则和你发送的JSON格式不匹配,下面给两种解决办法:
方法一:修改请求的JSON格式
当控制器方法参数是string这类简单类型时,Web API期望请求体是原始的JSON字符串值,而不是键值对对象。你需要把Postman里的请求体改成:
"test"
保持Content-Type为application/json,再发送请求就能正确返回"test"了。
方法二:创建DTO类接收参数
如果想保留当前的JSON格式(键值对对象),可以定义一个数据传输对象(DTO)来匹配请求结构:
public class TempRequest { public string Temp { get; set; } }
然后修改控制器的方法:
[Route("Test")] [HttpPost] public string Post([FromBody]TempRequest request) { return request.Temp; }
这样发送{"temp": "test"}就能正确获取到参数值了。
原因说明
Web API的模型绑定规则中,对于string、int这类简单类型,[FromBody]会尝试直接将请求体的原始JSON值绑定到参数上。如果发送的是包含键的JSON对象,绑定器无法找到匹配的简单类型参数,就会返回null。而使用DTO类时,绑定器会根据对象的属性名匹配JSON中的键,从而正确赋值。
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

