gpt4 book ai didi

clojure - 如何在 compojure 响应上显式设置内容类型?

转载 作者:行者123 更新时间:2023-12-01 18:04:23 24 4
gpt4 key购买 nike

我正在使用 compojure-api,但无法尝试为我的简单 Web 应用程序管理 Content-Type。我想要的是发出一个纯文本/文本的 HTTP 响应,但不知何故 Compojure-API 不断将其设置为“application/json”。

    (POST "/echo" []
:new-relic-name "/v1/echo"
:summary "info log the input message and echo it back"
:description nil
:return String
:form-params [message :- String]
(log/infof "/v1/echo message: %s" message)
(let [resp (-> (resp/response message)
(resp/status 200)
(resp/header "Content-Type" "text/plain"))]
(log/infof "response is %s" resp)
resp))

但是curl显示服务器响应Content-Type:application/json。

$ curl -X POST -i --header 'Content-Type: application/x-www-form-urlencoded' -d 'message=frickin compojure-api' 'http://localhost:8080/v1/echo'
HTTP/1.1 200 OK
Date: Fri, 13 Jan 2017 02:04:47 GMT
Content-Type: application/json; charset=utf-8
x-http-request-id: 669dee08-0c92-4fb4-867f-67ff08d7b72f
x-http-caller-id: UNKNOWN_CALLER
Content-Length: 23
Server: Jetty(9.2.10.v20150310)

我的日志记录显示该函数请求“纯文本/文本”,但不知何故框架胜过了它。

2017-01-12 18:04:47,581  INFO [qtp789647098-46]kthxbye.v1.api [669dee08-0c92-4fb4-867f-67ff08d7b72f] - response is {:status 200, :headers {"Content-Type" "text/plain"}, :body "frickin compojure-api"}

如何在 Compojure-API Ring 应用程序中获得对 Content-Type 的控制?

最佳答案

compojure-api 以 HTTP 客户端请求的格式提供响应,该格式使用 HTTP Accept header 指示。

使用curl你需要添加:

-H“接受:文本/纯文本”

您还可以提供可接受格式的列表,服务器将以该列表中第一个支持的格式提供响应:

-H“接受:text/plain、text/html、application/xml、application/json、*/*”

关于clojure - 如何在 compojure 响应上显式设置内容类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41626341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com