如何 return http 错误状态代码以及 class 中的自定义消息

How to return http error status code along with custom message in a class

我想要 return 一个带有自定义消息的 https 错误状态代码 class。但是,每当我尝试这样做时,它都会说它无法从 IResult 转换为我的模型 class 员工。在创建处理 sql 逻辑的 class 之前,我在 program.cs 文件中有如下内容,当我输入数据库中不存在的值时,该文件按预期工作。

app.MapGet("/employee/{id}", (ApplicationDbContext db, int id) =>
{
    var employee = db.Employee.Find(id);
    if (employee == null)
        return Results.NotFound("Employee not found");
    return Results.Ok(employee);        
});

现在创建一个单独的 class 将所有逻辑放在一个文件中 我在 program.cs 文件中有以下内容,在单独的文件中有逻辑。

app.MapGet("/employee/{id}", (IDataRepository dr, int id) =>
{
    return dr.GetEmployee(id);
});

现在在单独的文件中:

 public Employee GetEmployee(int id)
        {
            var employee = _db.Employee.Find(id);
            if (employee == null)
            {
                return Results.NotFound("Employee not found!");
            }
            return employee;
        }

它建议对我的模特 class 进行演员表,员工。当我输入一个 id 时知道它不存在于数据库中,它会给我一个转换错误,说无法转换两者。任何建议将不胜感激。

如果您想拆分代码,我建议您在端点文件中保留 nofound 方法。实际上,此逻辑与您的 GetEmployee 方法无关。 以后如果你想在你的另一部分代码中复用GetEmployee逻辑,notfound方法会给你带来麻烦。

我的意思是在职责方面,你的方法GetEmployee是检索员工并返回状态码(与员工无关)。