У меня есть запрос GET, определенный следующим образом:
(GET "/new_maze" []
:return {:result StandardMaze}
:query-params [size :- Long]
:summary "Generates a new maze and returns it as a JSON as well as an SVG XML string"
(ok {:result (generate-new-maze-code}))
Как вы можете видеть, я определил тип возврата как схему StandardMaze, которая выглядит следующим образом:
(defn Vector [inner-schema]
(s/both (s/pred vector? "vector")
[inner-schema]))
(s/defschema StandardMaze
{(s/required-key :svg) s/Str (s/required-key :maze) (Vector (Vector {(s/required-key :north) s/Num
(s/required-key :east) s/Num
(s/required-key :south) s/Num
(s/required-key :west) s/Num
(s/required-key :visited) s/Num
(s/required-key :weight) s/Num}))})
Мой код работает и генерирует лабиринт с заданным типом возврата и проходит проверку, а также выдает следующий ответ:
{
"result": {
"svg": "<?xml version=\"1.0\"?>\r\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN'\r\n
'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\r\n<svg
xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"fill-opacity:1; color-rendering:auto;
color-interpolation:auto..... etc",
"maze": [
[
{
"north": 0,
"east": 0,
"south": 1,
"west": 0,
"visited": 1,
"weight": 0
},
{
"north": 0,
"east": 1,
"south": 1,
"west": 0,
"visited": 1,
"weight": 11
},
{and so on...}
]
]
}
Однако в интерфейсе Swagger я не вижу, чтобы класс ответа отображал my: maze ключ. Я совершенно новичок в Clojure и особенно новичок в Ring, Swagger и Compojure.
Вот что я вижу в Swagger UI:
Два вопроса:
- Какой у меня есть правильный способ проверки вышеуказанного ответа?
- Как я могу показать этот класс возврата в Swagger UI?