Хороший способ создать документацию для моего API, поддерживаемого сервлетами?

Кто-нибудь знает хороший инструмент или стратегию для создания внешней документации для набора сервлетов Java? Я мог бы, конечно, использовать мой любимый редактор форматированного текста для создания независимого документа. Но вероятность того, что документация будет в исходном коде, будет выше. К сожалению, проблема немного неструктурирована. Каждый сервлет — это класс Java, но это конец официальной структуры. Внутри метода doGet сервлета он использует некоторый набор параметров, закодированных в URL-адресе, совершенно неструктурированным образом и создает какой-то вывод, например, веб-страницу или объект JSON.

Javadoc неплохо документирует сам код, но я хочу документировать API, который видят клиенты моего сервиса.

В стиле javadoc я мог бы представить документацию по классу и, возможно, определить некоторую аннотацию, чтобы поместить локальные переменные метода doGet, которые представляют параметры. Но мне по-прежнему нужна специализированная обработка - я не хочу, чтобы javadoc по умолчанию производил.

(Да, я видел этот другой вопрос Что такое лучший способ создать документацию по REST API?, на который нет обнадеживающих ответов, но я решил немного перефразировать вопрос.)


person vanmelle    schedule 10.09.2011    source источник


Ответы (1)


Я бы сказал, что вы должны добавить пару свойств в свои сервлеты - добавить свойство parameters и свойство response_details (или что-то подобное). Затем потребуйте их как часть вашей подписи сервлета; они могут содержать строки в каком-нибудь популярном текстовом формате (Markdown, ReST?), который описывает ввод и вывод этого сервлета.

Затем вы можете просто проанализировать классы сервлетов, пропустить полученные строки через соответствующий существующий процессор для любого используемого вами формата разметки, и альт, документы.

Вы можете добавить больше структуры к тому, что на самом деле требуется в этих свойствах, если хотите - например, parameters может потребоваться, чтобы быть Map<String,String> или что-то в этом роде. Это все зависит от вас.

person Amber    schedule 10.09.2011