我使用react-redux模板创建了一个简单的.netcore 2.1应用程序,其中有一个用于注册用户的API。控制器如下。
[HttpPost("register")]
public async Task<ActionResult<string>> Register(User user)
{
await this._authService.Register(user);
return Ok();
}
当我尝试使用控制器测试此API时,总是将用户的属性返回为null。以下是用户模型和邮递员请求。
public class User : IEntitybase
{
[Key]
public string Id { get; set; }
[Required]
public string Name {get; set;}
[Required]
public string Email {get; set;}
[Required]
public string Password {get; set;}
}
}
由于发送用户作为帖子正文不起作用,因此我尝试将用户参数作为查询参数发送,即使我没有提到从查询参数中获取参数,这也令人惊讶地起作用。
此后,我使用[FromBody]属性更改了API控制器,当我在正文中发送属性时,该属性仍然使用户为空。
默认情况下采用查询参数而不是取自正文可能是什么问题?
答案 0 :(得分:0)
尝试使用诸如Postman之类的API客户端。
请求应为GET 请求标头应具有Content-Type作为“ application / json”,它可以是其他类型,但是请尝试将其启动。 将正文设置为
{
"Id": "123",
"Name": "some name",
"Email": "someaddress@server.com",
"Password": "somepwd"
}
答案 1 :(得分:0)
如果尚未在模型中使用[JsonProperty(PropertyName =“ FooBar”)],则属性名称应与POST数据匹配(区分大小写)。
在您的情况下,在邮递员中,
选择POST动词并输入有效的URL
在主体中选择原始-> JSON(应用程序/ json)
{
"Id" : "555",
"Name" : "Some Name",
"Email" : "EmailAddress@abc.com",
"Password" : "Password"
}
答案 2 :(得分:0)
您丢失了:
当前
{
"Id" : "555",
"Name" "Some Name",
"Email" : "EmailAddress@abc.com",
"Password" "Password"
}
应该是什么
{
"Id" : "555",
"Name" : "Some Name",
"Email" : "EmailAddress@abc.com",
"Password" : "Password"
}