模型正在绑定,但不是ASP.NET核心Web API中json请求主体的单个参数
使用邮递员,我试图发布“城市”和“国家”数据 URL: 请求主体:{“城市”:“abc”,“国家”:“xyz”} 标题:内容类型:应用程序/json 但我无法检索数据,而是获取空值,如下所示。通过将属性(城市、国家)封装到模型中,我可以看到数据 下面是我使用的代码模型正在绑定,但不是ASP.NET核心Web API中json请求主体的单个参数,asp.net,asp.net-mvc,asp.net-core,asp.net-core-webapi,webapi,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Webapi,Webapi,使用邮递员,我试图发布“城市”和“国家”数据 URL: 请求主体:{“城市”:“abc”,“国家”:“xyz”} 标题:内容类型:应用程序/json 但我无法检索数据,而是获取空值,如下所示。通过将属性(城市、国家)封装到模型中,我可以看到数据 下面是我使用的代码 [AllowAnonymous] [ApiController] public class SampleController : ControllerBase { private readonly ILogger<Sa
[AllowAnonymous]
[ApiController]
public class SampleController : ControllerBase
{
private readonly ILogger<SampleController> _logger;
public SampleController(ILogger<SampleController> logger)
{
_logger = logger;
}
[HttpPost]
[Route("api/Sample/SendData")]
public ActionResult SendData(string city, string country)
{
try
{
if (ModelState.IsValid)
{
//return
return Ok("Success");
}
else
{
throw new Exception("error");
}
}
catch (Exception ex)
{
//return
return BadRequest(Convert.ToString(ex));
}
}
}
[AllowAnonymous]
[ApiController]
公共类SampleController:ControllerBase
{
专用只读ILogger\u记录器;
公共采样控制器(ILogger记录器)
{
_记录器=记录器;
}
[HttpPost]
[路线(“api/Sample/SendData”)]
公共操作结果SendData(字符串城市、字符串国家)
{
尝试
{
if(ModelState.IsValid)
{
//返回
返回Ok(“成功”);
}
其他的
{
抛出新异常(“错误”);
}
}
捕获(例外情况除外)
{
//返回
返回BadRequest(Convert.ToString(ex));
}
}
}
注意:我希望使用请求正文而不是通过查询字符串发送数据,因为数据最终将传递得更大。它不适用于单个参数。当您使用数据类型json时,asp.net控制器将始终假定它是您正在发送的对象 如果需要单独的参数,可以删除json请求头并将其替换为
text/plain
,然后将请求主体更改为键值
这里有一个类似的问题,但您需要安装newtonsoftjson nuget包。不过,您只会得到1个字符串,这是整个json文件,然后当它到达控制器时,您将把它反序列化为一个对象
@Nkosi,谢谢,我更正了。仍然存在问题。创建一个模式并将其与
[FromBody]
attribute@Nkosi,使用模型工作正常。但我想特别使用参数。