gpt4 book ai didi

python3 http.server 响应无效(Postman 和其他工具)

转载 作者:行者123 更新时间:2023-12-01 07:52:57 27 4
gpt4 key购买 nike

我正在使用基本的 python3 库 http 并使用服务器模块设置一个测试服务器。

测试我的服务器,我已成功在终端中使用curl 正确获取并查看响应:

$ curl -H "Content-Type: application/json" -X GET "http://localhost:8080/health"                 
{"health": "ok"}HTTP/1.0 200 OK
Server: BaseHTTP/0.6 Python/3.7.3
Date: Sun, 12 May 2019 19:52:21 GMT
Content-type: application/json

但是如果我尝试使用 Postman 等工具发出请求。有了这个,我收到无法获得任何响应错误消息(请求确实到达服务器并被处理,我可以在服务器的日志记录中看到这一点)。

有没有一种我目前没有看到的必须格式化我的回复的特定方法?我就是这样做的:

    def _prepare_response(self):
self._response_body({'health': 'ok'})
self.send_response(200)
self.send_header('Content-type','application/json')
self.end_headers()

最佳答案

如果您查看curl 输出,就会发现它没有任何意义:“正文”发生在状态行发送之前。

您应该在 header 之后发送响应正文,而不是之前。这意味着您必须首先发送响应行,然后发送 header ,最后结束 header ,然后才将正文内容写入 wfile 。所以代码应该看起来像这样:

 def _prepare_response(self):
self.send_response(200)
self.send_header('Content-type','application/json')
self.end_headers()
# move what I guess is a helper to after the headers
self._response_body({'health': 'ok'})

并且您可能想确保正确地对 dict 进行 json 序列化,而不是仅仅将其传递给 str 并希望它与 JSON 兼容(我不知道 _response_body 是做什么的)。

关于python3 http.server 响应无效(Postman 和其他工具),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56102959/

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