这是我在 Pedestal 上第一次尝试捕手拦截器:
(definterceptorfn catcher []
(interceptor
:error (fn [context error]
{:status 500
:body (->> error .toString (hash-map :error) json/write-str)
:headers {"Content-type" "application/json"}})))
正如我可以测试的那样,通过将(/1 0)添加到我的代码中,该函数确实被调用,但客户端得到一个状态为 200 的空响应,而不是映射中的响应。我想知道为什么会这样。
我的路线变量没有什么花哨的:
(defroutes routes
[[["/api"
^:interceptors [(body-params/body-params) (catcher) bootstrap/html-body]
...