2011-10-01 11 views
11

Clojureを使用してRESTサーバーを作成することを検討しています。注釈ベースのRESTサーバーでClojureを使用する

私はRESTEasyをJavaで使用した経験があります。アノテーションを使用してURL、テンプレートパラメータ、およびクエリパラメータをJavaクラス、メソッド、およびメソッドパラメータと関連付けます。私はJersey RESTサーバーも注釈を使用していると信じています(これもまたJAX-RSに基づいています)。

Clojureでこれらのフレームワークを使用することはできますか?アノテーションと関数を関連付ける正式な方法はありますか?

答えて

9

私はChas Emerick、Brian Carper、Christophe Grandによる、今後の書籍「Clojure Programming」の答えを見つけました。これはgen-classで動作するかどう

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

私はよく分からない:あなたはdeftypeで新しいタイプを定義する場合

、あなたは注釈に新しく作成したクラスを追加することができます。私は実験する必要があります。

+0

これは過剰です。コンパイルでこれをやります – jorgeu

+4

アノテーションベースのWebフレームワークを使用する既存の大きなプロジェクトが既に存在し、Clojureが適切であることを同僚に納得させる必要がある場合はありません。 – Ralph

関連する問題