【发布时间】:2018-12-28 01:55:15
【问题描述】:
我想使用 AJAX 将数据发布到我的 API,但我遇到了问题。我正在使用 Fiddler 测试我的 API,并且能够正确发布 JSON,但是在发布名称/值 urlencoded 字符串时,我收到一个 400 Bad Request,响应正文为 '{"":["The input was not valid ."]}'。
我的调试窗口显示:Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor:Information: Executing ObjectResult, writing value of type 'Microsoft.AspNetCore.Mvc.SerializableError'.
正在发布的 JSON 是:
{
"Name": "Test"
}
正在发布的表单数据是:
Name=Test
这是控制器和动作:
[Route("api/[Controller]")]
[ApiController]
public class AccountsController : Controller
{
[HttpPost]
public IActionResult CreateAccount(Account account)
{
//code
}
}
这是 Account 类:
public class Account
{
public string Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public string Website { get; set; }
}
在模型绑定期间似乎很明显存在问题,但表单数据似乎有效(我也使用 AJAX 生成了表单数据并获得了 400)。
【问题讨论】:
-
您应该发布 JSON(带有适当的“application/json”Content-Type 标头)或表单数据(带有适当的“application/x-www-form-urlencoded”Content-Type,而不是两者。
-
@heretic 我不会同时发布它们。我正在制作两篇单独的帖子,一篇使用 JSON,另一篇使用表单数据。内容类型由 fiddler 自动设置并匹配。
-
尝试使用 postman 或 fiddler 来测试 Api。使用它们时,您的 api 绑定模型好吗??
标签: c# rest asp.net-core asp.net-core-mvc