Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net核心Web API:如何从API方法返回验证消息?_C#_Api_Asp.net Core_.net Core_Http Post - Fatal编程技术网

C# .Net核心Web 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

我在客户端使用React Js,在服务器端使用.Net Core 3.0 Web API。我有一个名为CreateAccount的API方法,返回类型是IActionResult。现在,如果我使用任何一个模型属性进行验证,那么我必须发送或返回验证消息以及空的模型数据。我是API新手,尝试了如下操作,但无法将字符串作为结果类型发送

API方法

[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有任何想法,您能对此提供帮助吗?