2014-12-15 5 views
0

В Compojure можно определить по умолчанию 404 поведение, например,Лучший способ настроить Swagger/Compojure 404 ответа

(defroutes app-routes 
    ;; ... 
    (route/not-found "These aren't the droids you're looking for.")) 

Как мы уже были увеличение числа и сложности REST конечных точек, мы искали в переход на Swagger/compojure-api. Swagger кажется более высоким уровнем и сильно отличается от базового Compojure. Какая правильная идиома для настройки поведения 404 с использованием этой библиотеки?

ответ

2

В спецификации Swagger нет определения для обработчика по умолчанию «пропущено все остальное» Compojure. Swagger - это документирование существующей apis, а не несуществующей. Просто обсудили это на #swagger на freenode.

Тем не менее, вы можете описать маршруты по умолчанию вручную с помощью compojure-api, создав образец здесь: https://gist.github.com/ikitommi/cdf19eeaf4918efb051a.

Примечание: Спецификация Swagger на самом деле не понимает метод ANY -http, но, похоже, работает с 1.2 Swagger UI - не будет работать с кодегами. Чтобы быть стандартным, вы должны добавить ручные обработчики для всех методов http (https://github.com/swagger-api/swagger-spec/blob/e42dd2011340a12efbb531f593c0f99c831c4582/schemas/v1.2/operationObject.json#L10) до конца определений маршрутов.

надеюсь, что это поможет.

+0

Ваш эффект работал и улучшался на нашем обходном пути. Благодаря! – JohnJ

+0

Последнее: бит 'ANY/*' в вашем gist вызывает '/ *' для отображения на странице документов API, чего мы не хотели; опуская 'ANY/*' и перемещая 'route/not-found' в форму верхнего уровня' swaggered', обходится вокруг этого. – JohnJ