【问题标题】:Return HTTP Status and JSON response C#返回 HTTP 状态和 JSON 响应 C#
【发布时间】:2021-09-11 00:49:51
【问题描述】:

我有一个 REST API,当有验证消息时,我想返回一个 400 的 HTTP 状态以及验证消息列表。例如,在 Postman 中,我希望工具中的状态显示 400,并在响应正文中显示 JSON 消息列表。

有没有办法在 C# 中做到这一点?

public async Task<IActionResult> OnPostAsync([FromBody] ServiceRequest serviceRequest)
{
    try
    {
        var user = User.FindFirst("client_id")?.Value;
        int VendorId = await _audit.Log(user, AuditLogClass.API_READ, "serviceData");

        List<string> ValidationMessages = _serviceRequestBO.processServiceRequest(serviceRequest);

        if (ValidationMessages.Count == 0)
        {
            await _emailService.SendEmailAsync("mark.walker@magenium.com", "Success", "Service Request created");                  
            return StatusCode(StatusCodes.Status200OK);
        }
        else
        {
            //StatusCodes.Status400BadRequest
            return new JsonResult(ValidationMessages);
        }
    }
    catch(Exception e)
    {
        _logger.LogError(e, "serviceData - GET");
        return StatusCode(StatusCodes.Status500InternalServerError);
    }
}

【问题讨论】:

  • 这是 ASP.NET MVC 吗? ASP.NET Web API?还是 ASP.NET Core?请适当地标记您的问题,以帮助回答者了解您所处的框架,并帮助吸引了解该框架的人回答您的问题。
  • 只做return BadRequest(validationMessages);return Ok();
  • 只需使用 BadRequest() 并在其中传递自定义消息

标签: c# asp.net-core


【解决方案1】:

假设它是 ASP.NET Core MVC,JsonResult 类具有StatusCode 属性。所以

...
return new JsonResult(ValidationMessages)
{
    StatusCode = StatusCodes.Status400BadRequest
};
...

【讨论】:

    【解决方案2】:

    您只需要使用 here 中描述的 BadRequest() 重载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2017-04-05
      相关资源
      最近更新 更多