Я не могу понять, где я ошибаюсь со следующим маршрутом:
(ns mds.routes.api
(:require [mds.db.core :refer [*db*] :as db]
[compojure.core :refer [defroutes POST]]
[ring.util.http-response :as response]
[clojure.walk :as walk]))
(defroutes api-routes
(POST "/student" request
(let [{body :body} request]
(let [student (walk/keywordize-keys body)]
(try
(db/create-student! student)
{:saved true
:error nil
:student student}
(catch Exception e {:saved false
:error e
:student nil})
)))))
Я пытаюсь вернуть тело ответа с помощью объекта json, который выглядит примерно так:
{
"saved":"true",
"error":"nil",
"student": {...}
}
Но я просто получаю пустые тела ответов. Вызов db/create-student!
работает нормально, и без выражения (try) я получаю либо тело JSON, либо ошибку 500, но с выражением (try) я получаю каждый раз пустой ответ со статусом 200.
Как мне получить выражение (try), чтобы вернуть карту и передать ее обработчику ответа?
try
, чтобы увидеть, есть ли еще какое-то различие? - person Arthur Ulfeldt   schedule 23.05.2017