ring-json的wrap-json-response中间件和compojure返回text/plain?

Rya*_*yan 10 clojure compojure ring

我正在尝试在我的compojure应用程序中使用ring-json的wrap-json-response中间件.我有一个简单的GET处理程序,它返回一个地图,就像{:foo 1},当我点击URL时,响应响应text/plain和一个空响应体.我似乎无法用JSON版本的地图来回应它.

这是我的处理程序代码:

(ns localshop.handler
  (:use compojure.core)
  (:require [localshop.routes.api.items :as routes-api-items]
            [ring.middleware.json :as middleware]
            [compojure.handler :as handler]
            [compojure.route :as route]))

;; map the route handlers
(defroutes app-routes
  (context "/api/item" [] routes-api-items/routes))

;; define the ring application
(def app
  (-> (handler/api app-routes)
      (middleware/wrap-json-body)
      (middleware/wrap-json-params)
      (middleware/wrap-json-response)))
Run Code Online (Sandbox Code Playgroud)

路由处理函数字面上只返回一个映射,所以代码很简单,我想我可以省略.如果从compojure路由处理程序返回一个映射是问题,那么也许就是这样呢?

Ank*_*kur 15

看看这个.基本上如果你回来{:body {:my-map "hello"}}那么它会工作正常.

  • 谢谢你,我把头发拉了出来.这应该是更好的记录. (3认同)
  • 我最好的猜测是因为该方法可以允许除响应主体之外的更多选项,因此它要求您隐式指定`{:body {}}`. (2认同)