如何 return 来自服务层的 Json 响应(Dot net core 3.1)

How to return a Json response from a service layer (Dot net core 3.1)

我有一个问题。我有一个点网核心 3.1 应用程序。我有一个约会控制器调用 预约服务。约会调用验证服务来验证数据库中的某些值。如果数据库中不存在该值,我想停止执行。 我想要 return 验证服务对客户端的响应列表。

如何 return 验证服务的响应?

代码示例:

public async Task<bool> Validate() { 
bool ValidateOK = await 
_validateService.ValidateObjects(ObjectsToValidate); 
if (ValidateOK == false) //Throw list of Errors en messages return true; 
}
Responses wil be like this
{
   Errorcode: 201
   ErrorMessage: Value1 doesn't exists in the database
}
{
   Errorcode: 201
   ErrorMessage: Value2 doesn't exists in the database
}

对于 return 一个 Json 响应,您应该更改用作端点的函数/方法的 return Type。这是 front-end.

调用的第一个函数

在这种情况下,我建议创建自定义 class。这将使实现更具体的响应处理变得容易。并且将使您的应用程序的不同部分更易于访问。

class 看起来像这样(您可以对其进行操作以满足您的需要):

public class Response
{
    public int StatusCode { get; set; }
    public string Message { get; set; }
}

您的 Validate 函数应如下所示:

public async Task<Response> Validate(type objectToValidate)
{
    // validation process
    if (!validated) return response;
}

不要忘记将参数中的 Type 设置为您需要验证的任何值。 您的 Validate 函数不负责与 front-end 对话。所以你不希望它 return Json.

您的 Endpoint 将如下所示:

public async Task<JsonResult> MyEndpoint()
{
    // your code
    var response = await _validateService.Validate(objectToValidate);
    return Json(response);
}

您可能需要参考 Microsoft.AspNetCore.Mvc