将Clojure与基于注释的REST服务器一起使用

时间:2011-10-01 18:11:52

标签: rest clojure jax-rs

我正在考虑使用Clojure编写REST服务器。

我有使用RESTEasy和Java的经验。它使用注释将URL,模板参数和查询参数与Java类,方法和方法参数相关联。我相信Jersey REST服务器也使用注释(因为它也基于JAX-RS)。

是否可以在Clojure中使用这些框架?是否有正式的方法将注释与函数相关联?

1 个答案:

答案 0 :(得分:9)

我在即将出版的书“Clojure Programming”中找到了答案,Chas Emerick,Brian Carper和Christophe Grand。

如果使用deftype定义新类型,则可以为新创建的类添加注释:

(ns my.resources
  (:import (javax.ws.rs Path PathParam Produces GET)))

(definterface PersonService
  (getPerson [^Integer id]))

(deftype ^{Path "/people/{id}"} PersonResource []
  PersonService
  (^{GET true                                                
     Produces ["text/plain"]}
    getPerson
    [this ^{PathParam "id"} id]           
    ; blah blah blah    
  ))

我不确定这是否适用于gen-class。我需要做实验。