我有如下的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正文中使用了following。
{
"param1" : "abc",
"param2": "def"
}
但是,这将导致400错误的请求。如果我在PostData
方法上添加一个断点,它将到达我在检查null或空字符串并且两个参数均为null的第一行。这使我认为我没有在客户端正确构建json。有人可以指出我在这里做错了什么吗?
尝试改用FormCollection
。
[HttpPost]
public ActionResult PostData(FormCollection collection)
{
// Get Post Params Here
string p1 = collection["param1"];
string p2 = collection["param2"];
}
这是我的方法
[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
....
[HttpPost("[action]")]
public string GetStudentData_1(string p1, string p2)
{
return p1 + p2;
}
}
这是我的称呼方式
第二种方法是传递VALID
Json。将Controller方法更改为:
[HttpPost("[action]")]
public string GetStudentData_1([FromBody]JObject data)
{
return data["p1"].ToString() + data["p2"].ToString() ;
}
并确保JSON有效,然后在“正文/原始”中选择JSON (application/json)
:
data["p1"]
和data["p2"]
使您可以访问参数。为JObject
和
using Newtonsoft.Json.Linq;
从参数1和参数2中删除双反逗号