在Compojure中,可以定义默认的404行为,例如,
(defroutes app-routes
;; ...
(route/not-found "These aren't the droids you're looking for."))
由于我们一直在增加REST端点的数量和复杂性,我们一直在寻求切换到Swagger / compojure-api
。 Swagger似乎更高级别,与基本Compojure有很大不同。使用此库自定义404行为的正确习惯是什么?
答案 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)的手动处理程序添加到路径定义的末尾。
希望这会有所帮助。