API .net core with list 如何在任务<IActionResult> Post([FromBody] List<T>? request) 不是列表或数组时显示 badrequest 自定义消息?

问题描述 投票:0回答:1

问题在于我有这篇文章:

public async Task<IActionResult> Post([FromBody] List<TabAccesos>? request)

但是当你在 Postman 中尝试没有

[]
的主体时,显示的错误是:

errors": {
        "$": [
            "The JSON value could not be converted to System.Collections.Generic.List`1[nombreproyecto.Models.TabAccesos]. Path: $ | LineNumber: 1 | BytePositionInLine: 5."
        ]

我需要更改该错误消息,但是当输入该帖子时不要进入捕获,在输入之前执行错误请求。怎么解决这个问题?

我们需要显示自定义的错误请求消息,例如 JSON 的方式不正确或类似的消息,因为客户端不想显示表或项目的名称。

 System.Collections.Generic.List`1[nombreproyecto.Models.TabAccesos]
.net-core
1个回答
0
投票

由于模型状态无效而发生错误。您可以如下配置全局模式状态错误

services.Configure<ApiBehaviorOptions>(options =>
{
    options.InvalidModelStateResponseFactory = context =>
    {
        var errors = context.ModelState.Values
            .SelectMany(v => v.Errors)
            .Select(e => e.ErrorMessage)
            .ToList();

        // Customize the error message
        var customErrorMessage = "Invalid model state. Please check your input.";

        // Combine the custom error message with the original errors if needed
        var finalErrorMessage = $"{customErrorMessage} Errors: {string.Join(", ", errors)}";

        var result = new BadRequestObjectResult(new
        {
            message = finalErrorMessage
        });

        return result;
    };
});
© www.soinside.com 2019 - 2024. All rights reserved.