Использование Clojure с REST-сервером на основе аннотаций - PullRequest
11 голосов
/ 01 октября 2011

Я подумываю о создании сервера REST с использованием Clojure.

У меня есть опыт использования RESTEasy с Java.Он использует аннотации для связи URL-адресов, параметров шаблона и параметров запроса с классами Java, методами и параметрами методов.Я считаю, что сервер Jersey REST также использует аннотации (поскольку он также основан на JAX-RS).

Возможно ли использовать эти платформы с Clojure?Есть ли официальный способ связать аннотации с функциями?

1 Ответ

9 голосов
/ 03 октября 2011

Я нашел ответ в следующей книге Чэса Эмерика, Брайана Карпера и Кристофа Гранда "Программирование Clojure".

Если вы определите новый тип с помощью 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.Мне нужно будет поэкспериментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...