【发布时间】:2019-11-07 04:08:01
【问题描述】:
我有一个 API 控制器如下:
[ApiController]
[Route("test")]
public class TestController : ControllerBase
{
[HttpPost]
public IActionResult PostData(string param1, string param2)
{
if (string.IsNullOrEmpty(param1) || string.IsNullOrEmpty(param2))
{
return BadRequest();
}
string result = "result = " + param1 + "." + param2;
return new JsonResult(result );
}
}
当我尝试从邮递员访问它时,我在撰写帖子请求时在 json 正文中使用以下内容。
{
"param1" : "abc",
"param2": "def"
}
但是,这会导致 400 Bad Request。如果我在PostData 方法上添加一个断点,它会到达我正在检查空字符串或空字符串并且两个参数都为空的第一行。这让我认为我没有在客户端正确构建 json。有人可以指出我在这里可能做错了什么吗?
【问题讨论】:
-
1.使用
application/x-www-form-urlencoded:param1=abc&param2=def2.或者创建一个DTO类public class Dto{ public string Param1 {get;set;} public string Param2{get;set;} }并将方法改为PostData(Dto payload) -
我不想使用 DTO 类,而是更喜欢坚持使用 json。这可能与约束有关吗?
-
如果你只有一个参数是可以的。但是,它不适用于您的场景:JSON 需要在绑定参数之前反序列化 HTTP 正文
-
如果使用javascript发布json数据,可能需要JSON.stringify(jsonObject)
-
您的问题现在解决了吗?如果我的回答对您有帮助,您能accept我的回答吗?
标签: c# asp.net-core http-post asp.net-core-webapi asp.net-core-3.0