Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure Typecast compojure route';s id自动转换为整数_Clojure_Routes_Parseint_Compojure_Ring - Fatal编程技术网

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))))