gpt4 book ai didi

.net - 我如何让 WebAPI 拒绝带有无效负载的请求?

转载 作者:行者123 更新时间:2023-12-05 00:38:17 26 4
gpt4 key购买 nike

我在 web api 中使用了一些版本控制技术,这些技术基本上会根据 header 中指定的 api 版本调用 Controller 。因此,假设我们有一个名为 api/GetSalesHistory 的入口点,但我们的服务器人员(我)必须更改请求契约(Contract)才能执行我们需要执行的操作。在某些情况下,这会成为重大更改(例如新的必填字段,或已更改为列表的单个值),因此版本控制。

因此,我的路由选择器将在 header 中查找 api 版本,然后调用正确的 Controller 。版本1 Controller 有版本1请求的参数类型,版本2 Controller 有版本2请求的参数类型。

问题来了。开箱即用, Controller 将运行,无论您发送它的有效载荷如何。回到 WCF 中,如果您发送了错误的对象,序列化将失败,从而导致整个请求失败。现在,如果我将版本 1 有效负载发送到版本 2 Controller ,而不是序列化失败或请求失败,它会创建一个带有空字段的版本 2 请求实例,然后继续运行。所以参数不会以 null 形式出现,所以我不能简单地说 if(request == null) explode;

如果未收到预期的负载,我如何强制 Controller 拒绝请求?

最佳答案

我忘记了您可以使用 ModelState.IsValid,它会在上下文中处理目标。我只是检查:

if(!ModelState.IsValid) throw

关于.net - 我如何让 WebAPI 拒绝带有无效负载的请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com