【问题标题】:Api call constraint reference for multiple params not honored不支持多个参数的 API 调用约束参考
【发布时间】:2019-08-08 12:42:36
【问题描述】:

调用 API 时仅验证第一个 constraint reference, {userid:guid:required}

第二个参数{key:maxlength(5):required}经过验证。这里有什么问题,这是一个框架错误吗?

[HttpDelete("{userid:guid:required}/{key:maxlength(5):required}")]
[Route("deletefavorite")]
public ActionResult<Favorites> DeleteFavorites([FromQuery]Guid userId, [FromQuery]string key)
{
    if (!ModelState.IsValid) return BadRequest(ModelState);

    return NotFound($"Error 404: Could not delete {key}");
}

我正在为单页应用程序 (SPA) 构建 .Net Core 2.2 API

【问题讨论】:

  • 您请求执行此操作的确切 URL 是什么?
  • 它是“mydns/api/deletefavorite/?userid=d06b76ee-....&key=12345”,guid 部分经过验证,但不是密钥。我可以手动验证它,但这应该可以工作,这让我很烦恼。

标签: c# asp.net-core routing asp.net-core-webapi asp.net-core-2.2


【解决方案1】:
    using System.ComponentModel.DataAnnotations;

    [Route("deletefavorite")]
    public ActionResult<Favorites> DeleteFavorites([FromQuery][Required]Guid userId, [FromQuery][Required][MaxLength(5)]string key)
    {
        if (!ModelState.IsValid) return BadRequest(ModelState);

        return NotFound($"Error 404: Could not delete {key}");
    }

输出

{
    "key": ["The field key must be a string or array type with a maximum length of '5'."]
}

【讨论】:

  • 谢谢,这行得通。但仍然不确定为什么其他DataAnnotations 不起作用。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多