我正在使用基本的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之类的工具发出请求。有了这一消息,我得到了Could not get any response
错误消息(请求确实到达了服务器并已处理,我可以在服务器的日志记录中看到它。)
我是否有格式化我现在看不到的回复的特定方法?这是我的方法:
def _prepare_response(self):
self._response_body({'health': 'ok'})
self.send_response(200)
self.send_header('Content-type','application/json')
self.end_headers()
答案 0 :(得分:1)
如果您看一下curl输出,那是没有意义的:“ body”发生在状态行发送之前。
您应该在标头后 而不是之前发送响应正文。这意味着您必须先发送响应行,然后发送标题,然后结束标题,然后再将正文内容写入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会做什么)。
答案 1 :(得分:0)
请提供您的邮递员配置。否则很难确定出什么问题。
但是:如果您的cURL调用运行良好,请通过“复制和粘贴”将整个命令导入到“导入”->“原始文本”中的邮递员中,然后尝试查看此请求是否有效。