【发布时间】:2016-02-19 01:20:01
【问题描述】:
我正在尝试使用 NancyFX 启动和运行 REST API,到目前为止,它看起来真的很酷,而且完全符合医生的规定!
有一件事我在任何地方都找不到。我想验证发送到我的 API 端点的 JSON,在我将它传递到端点之前,或者至少在我尝试绑定到模型之前。
任何人都可以将我指向博客文章或 wiki 的一部分,这可以帮助我。
谢谢
【问题讨论】:
我正在尝试使用 NancyFX 启动和运行 REST API,到目前为止,它看起来真的很酷,而且完全符合医生的规定!
有一件事我在任何地方都找不到。我想验证发送到我的 API 端点的 JSON,在我将它传递到端点之前,或者至少在我尝试绑定到模型之前。
任何人都可以将我指向博客文章或 wiki 的一部分,这可以帮助我。
谢谢
【问题讨论】:
如果你想这样做,那么你需要查看 Request.Body 并自己解析+验证它。您可以逐条路线进行,但让我们面对现实吧 - 这会令人麻木地无聊,而这与南希的全部意义相反。
所以我建议你使用的是前钩子。 Before-hook 让您可以在传入请求被任何路由处理之前抓住它,并用它做任何您想做的事情 - 您甚至可以选择短路请求并直接从钩子返回响应。
有两种Before-hooks;应用程序和模块。应用程序挂钩可让您在到达路由之前捕获任何传入请求,而模块挂钩可让您捕获将由指定挂钩的模块中的路由处理的任何传入请求。
您可以在我们的 Wiki 上阅读有关钩子的更多信息
希望对你有帮助
【讨论】:
var customer = this.Bind<Customer>(); 我必须首先将流中的位置设置为 0,如下所示:Request.Body.Position = 0; 据我所知,我不能使用自定义验证器,因为验证器需要对象首先绑定,如果 JSON 不正确,这是不可能的。我现在在一条特定的路线内完成所有这些工作。有没有办法做类似Post["/customers", schema] = p => ...