gpt4 book ai didi

http - 了解 Ring 和 Appengine-magic (Clojure) 上的处理程序

转载 作者:可可西里 更新时间:2023-11-01 16:06:57 25 4
gpt4 key购买 nike

我开始研究一些 clojure 网络应用程序,并决定结合使用 Ring + Compojure。最近我决定尝试使用 Google Appengine 和 AppEngine-magic (https://github.com/gcv/appengine-magic)。然而,appengine-magic(通过它的启动函数)和 ring 的 run-jetty 函数都只接受 1 个处理程序作为参数,我正在实现几个处理程序,并且想知道如何部署它们。

提前致谢,泽

最佳答案

永远只有一个顶级处理程序——毕竟,即使在某些概念层面上有多个处理程序,应用程序也需要以某种方式决定将哪个处理程序应用于给定请求,因此例程选择成为顶级处理程序。因此,简短的回答是您需要提供一个函数来查看请求并将其传递给应用程序内多个处理程序中的适当处理程序;该函数是要提供给 run-jetty(或等效项)的处理程序。

通常使用 Ring + Compojure,你会有一些基本的(“内部”)处理程序用于处理特定的 URI 和一些作为中间件实现的特殊用途的处理程序(例如,404s)。前者倾向于以defroutes形式定义,而后者则是高阶函数。

中间件处理程序在查看请求后自行决定是要立即返回响应还是委托(delegate)给它们周围的处理程序。为适当的 URI 调用基于路由的“内部”处理程序,并可以选择返回 nil 以指示请求对它们没有意义(此时剩余的基于路由的处理程序已尝试;如果所有 nil 都输出,则最终响应通常由某个中间件生成,可能返回 404)。

关于 Compojure here 我写了一个很长的回答;也许它可能有助于掌握 Compojure 基于路由的处理程序定义的窍门。

关于http - 了解 Ring 和 Appengine-magic (Clojure) 上的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4467057/

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