Python BaseHTTPRequestHandler:用JSON响应

Som*_*ing 5 python basehttpserver basehttprequesthandler

我有一个继承BaseHTTPRequestHandler并实现该方法的Python类do_POST

我目前仅使用方法末尾的以下命令以整数状态(例如200)成功响应:

self.send_response(200)
Run Code Online (Sandbox Code Playgroud)

我也尝试发送一些字符串作为响应的一部分。我该怎么办?

Som*_*ing 8

事实证明它非常简单,虽然没有很多例子。

只需使用:

self.wfile.write(YOUR_STRING_HERE)
Run Code Online (Sandbox Code Playgroud)

特别是对于json的情况:

import json
json_string = json.dumps(YOUR_DATA_STRUCTURE_TO_CONVERT_TO_JSON)
self.wfile.write(json_string)
Run Code Online (Sandbox Code Playgroud)

  • @BjornW 使用 `self.wfile.write(json_string.encode(encoding='utf_8')` (2认同)

小智 5

至少在我的环境(Python 3.7)中,我必须使用

self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
self.wfile.write(json_str.encode(encoding='utf_8'))
Run Code Online (Sandbox Code Playgroud)

否则将引发此错误:TypeError:需要一个类似字节的对象,而不是'str'

  • 或者你可以像这样使用`bytes`:`self.wfile.write(bytes(json.dumps(object, ensure_ascii=False), 'utf-8'))` (3认同)