Clojure Typecast compojure route';s id自动转换为整数
我有这样的东西Clojure Typecast compojure route';s id自动转换为整数,clojure,routes,parseint,compojure,ring,Clojure,Routes,Parseint,Compojure,Ring,我有这样的东西(GET”/photo/:id/tags/:tag id/…) 因此,对于该上下文中的每个路由,我必须显式地将这些ID类型转换为整数。是否有任何方法可以自动实现这一点,或者有一个通用的位置来类型转换ID而不是每个控制器的操作?您可以通过以下方式获得此行为:您可以为URL/查询参数以及请求正文指定模式类型: 通过指定[id:-Long]您要求将id路径参数强制为Long类型。您可以通过以下方式获得此行为:您可以为URL/查询参数以及请求正文指定架构类型: 通过指定[id:-Long]
(GET”/photo/:id/tags/:tag id/…)
因此,对于该上下文中的每个路由,我必须显式地将这些ID类型转换为整数。是否有任何方法可以自动实现这一点,或者有一个通用的位置来类型转换ID而不是每个控制器的操作?您可以通过以下方式获得此行为:您可以为URL/查询参数以及请求正文指定模式类型:
通过指定
[id:-Long]
您要求将id
路径参数强制为Long
类型。您可以通过以下方式获得此行为:您可以为URL/查询参数以及请求正文指定架构类型:
通过指定
[id:-Long]
您要求将id
路径参数强制为Long
类型。从Compojure 1.4.0开始,您还可以使用以下命令为参数提供强制函数:从Compojure 1.4.0开始,您还可以使用以下命令为参数提供强制函数:
(defapi app
(GET "/photo/:id" []
:path-params [id :- Long]
(ok {:message (str "Photo with ID " id)})))
[x :<< as-int]
(defroutes app
(GET "/customers" [] customers)
(GET "/suppliers" [] suppliers)
(GET "/accounts" [] accounts)
(context "/statements" []
(GET "/" [] statements)
(GET "/:id" [id :<< as-int] (single-statement id))))