【问题标题】:How to handle request with parameter of wrong type in .NET Core? [duplicate]如何处理 .NET Core 中参数类型错误的请求? [复制]
【发布时间】:2020-01-18 19:13:15
【问题描述】:

所以我有这个问题,我有类似的端点

        [HttpGet("get/{id}")]
        public async Task<IActionResult> Get([FromRoute] long? id)
        {
            if (id == null)
                return BadRequest();
            var result = await Mediator.Send(new GetIssueByIdQuery(id));
            return CreateResponse(result);
        }

如果我发送类似的请求

..../get/1

一切正常。但是如果我给出不同类型的 id 参数,例如:

.../get/asd

服务器会自动响应一些通用验证错误和 404。由于请求甚至没有到达端点,我如何自己处理这种情况并向客户端返回一些更具描述性的信息?

【问题讨论】:

标签: c# api


【解决方案1】:

您可以将id参数的类型更改为字符串并尝试自己解析:

public async Task<IActionResult> Get([FromRoute] string id)
{
    if (string.IsNullOrWhiteSpace(id))
        return BadRequest($"{nameof(id)} parameter should not be empty");
    if (!long.TryParse(id, out var longValue))
        return BadRequest($"{nameof(id)} should be convertible to long");

    var result = await Mediator.Send(new GetIssueByIdQuery(longValue));
    return CreateResponse(result);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多