我创建了ASP.net core 3.0 Web API应用程序,并向其中添加了HttpPost
端点。
[当我使用postman张贴到此发布端点时,该端点未获取我传递给它的JSON,而是获取了null。
。NET Core 3.0中是否已更改或更改了HTTP发布终结点端点?
我发布的JSON:
{
"status": "0",
"operation":"",
"filter":"",
"currentOrderList": [
]
}
控制器代码:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET: api/<controller>
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<controller>/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/<controller>
[HttpPost]
public void Post([FromBody]string value)
{
}
// PUT api/<controller>/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/<controller>/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
我要发布的网址是https://localhost:44336/api/values。我可以看到在Visual Studio调试过程中该方法被命中的事实打击了端点。唯一的问题是参数以空值形式出现
创建模型以匹配给定数据
public class MyClass {
[JsonProperty("status")]
public int Status { get; set; }
[JsonProperty("operation")]
public string Operation { get; set; }
[JsonProperty("filter")]
public string Filter { get; set; }
[JsonProperty("currentOrderList")]
public string[] CurrentOrderList { get; set; }
}
然后更新控制器操作以期望所需的类型
//POST api/values
[HttpPost]
public IActionResul Post([FromBody]MyClass value) {
if(ModelState.IsValid) {
//...
return Ok();
}
return BadRequest();
}