自定义Swagger / Compojure 404响应的最佳方法

时间:2014-12-15 16:14:41

标签: clojure swagger ring compojure

在Compojure中,可以定义默认的404行为,例如,

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

由于我们一直在增加REST端点的数量和复杂性,我们一直在寻求切换到Swagger / compojure-api。 Swagger似乎更高级别,与基本Compojure有很大不同。使用此库自定义404行为的正确习惯是什么?

1 个答案:

答案 0 :(得分:2)

Swagger Spec中没有定义"错过了其他所有内容" Compojure的默认处理程序。 Swagger是关于记录现有的apis,而不是不存在的api。刚刚在freenode上的#swagger讨论了这个问题。

但是,您可以使用compojure-api手动描述默认路由,在此处创建示例:https://gist.github.com/ikitommi/cdf19eeaf4918efb051a

注意:Swagger规范实际上并不了解ANY -http方法,但似乎与1.2 Swagger UI一起使用 - 不适用于codegens。要符合标准,您应该将所有http方法(https://github.com/swagger-api/swagger-spec/blob/e42dd2011340a12efbb531f593c0f99c831c4582/schemas/v1.2/operationObject.json#L10)的手动处理程序添加到路径定义的末尾。

希望这会有所帮助。