Clojure 如何在Compojure中设置状态代码?

Clojure 如何在Compojure中设置状态代码?,clojure,compojure,Clojure,Compojure,我正在用Clojure和Compojure写一个小网站。我想根据找到或未找到的数据为每个请求设置HTTP响应状态 最后一个调用是html5宏,它将需要发送回浏览器的html返回给处理程序。是否可以在此处以某种方式设置HTTP响应状态 (ns myapp.views.layout (:require [hiccup.page :refer (html5 include-css include-js)])) (defn layout [title & content] (h

我正在用Clojure和Compojure写一个小网站。我想根据找到或未找到的数据为每个请求设置HTTP响应状态

最后一个调用是html5宏,它将需要发送回浏览器的html返回给处理程序。是否可以在此处以某种方式设置HTTP响应状态

(ns myapp.views.layout
  (:require
    [hiccup.page :refer (html5 include-css include-js)]))

(defn layout [title & content]
  (html5
    (head title)
    (body content)))

如果返回一个包含

{:status NNN
 :body (my-code-here)}

然后:status键的内容将是http响应代码。

如果只返回文本,则该文本将成为响应的主体。如果返回映射,映射可以描述响应的其他方面

(defn layout [title & content]
  {:status 200
   :body (html5 (head title) (body content))})

为了添加一些可能对其他人有用或感兴趣的细节,Compojure路由处理程序的每个返回值以及该智能都封装在中

基于对
渲染
代码的粗略检查,返回映射之所以有效,是因为您返回的映射是-d,并且Compojure隐式创建了该映射

您可能还希望在处理程序返回值的映射中包含
:headers{“Content Type”“text/html”}
(或任何适当的内容)。我的回复中的页面标题中的Unicode字符未正确呈现,因为缺少内容类型标题