C# .Net核心Web API:如何从API方法返回验证消息?
我在客户端使用React Js,在服务器端使用.Net Core 3.0 Web API。我有一个名为CreateAccount的API方法,返回类型是IActionResult。现在,如果我使用任何一个模型属性进行验证,那么我必须发送或返回验证消息以及空的模型数据。我是API新手,尝试了如下操作,但无法将字符串作为结果类型发送 API方法C# .Net核心Web API:如何从API方法返回验证消息?,c#,api,asp.net-core,.net-core,http-post,C#,Api,Asp.net Core,.net Core,Http Post,我在客户端使用React Js,在服务器端使用.Net Core 3.0 Web API。我有一个名为CreateAccount的API方法,返回类型是IActionResult。现在,如果我使用任何一个模型属性进行验证,那么我必须发送或返回验证消息以及空的模型数据。我是API新手,尝试了如下操作,但无法将字符串作为结果类型发送 API方法 [AllowAnonymous] [HttpPost("createaccount")] public async Task<IActionResul
[AllowAnonymous]
[HttpPost("createaccount")]
public async Task<IActionResult> CreateAccount([FromBody]Users user)
{
try
{
if (ModelState.IsValid)
{
if (user == null)
return BadRequest(new { message = "Data is empty" });
if(user.UserType!="Admin")
{
return new ValidationResult("Only Admin can create new account");
}
return Ok(await _userService.CreateAnUserAccount(user));
}
}
catch(Exception e)
{
throw new ArgumentException(e.Message);
}
return ValidationProblem();
}
[AllowAnonymous]
[HttpPost(“CreateCount”)]
公共异步任务CreateCount([FromBody]用户)
{
尝试
{
if(ModelState.IsValid)
{
if(user==null)
返回BADDREQUEST(新的{message=“数据为空”});
if(user.UserType!=“Admin”)
{
返回新的ValidationResult(“只有管理员才能创建新帐户”);
}
返回Ok(等待_userService.CreateAnUserAccount(用户));
}
}
捕获(例外e)
{
抛出新的ArgumentException(e.Message);
}
返回ValidationProblem();
}
我不知道正确的.Net核心API编码部分,有人能帮我解决这个问题吗 您可以返回一个
ObjectResult
和一个StatusCode
以外的StatusCode.Status200OK
和一个序列化对象,该对象包含您想要返回给客户端的任何信息,例如:
return new ObjectResult(new YourApiError() { Message = "message.." })
{
StatusCode = StatusCodes.Status405MethodNotAllowed
};
我应该为“YourApiError”给出什么?@MdAslam:这是一个简单的POCO类,它有一个
Message
属性,您可以自己定义:public-class YourApiError{public-string-Message{get;set;}}
是的,谢谢您,但我也想检查结果。如果结果正确,则我必须发送带有statusCode的结果,但如果服务类中存在任何错误,则我必须返回验证消息。所以我必须用隐式逻辑吗?再次查看我的代码,如果(user.UserType!=“Admin”){返回新的ValidationResult(“只有管理员可以创建新帐户”);}@MdAslam:我不确定我是否理解您的问题。当然,您需要根据控制器操作的验证逻辑的结果返回不同类型的结果。为什么我们不能在.Net Core中使用HttpResponseMessage?我认为通过使用这个返回类型“HttpResponseMessage”,我们可以发送错误消息或成功消息以及模型数据,因此我尝试使用这个HttpResponseMessage,但无法创建响应。如果您对HttpResponseMessage有任何想法,您能对此提供帮助吗?