我有一个运行Python 3的http.server,它仅接受POST请求。但是,我们希望将接受/期望的内容类型指定为application/json
,而不接受其他数据类型。
我目前正在使用的方法是
from http.server import BaseHTTPRequestHandler
class POSTProcessor(BaseHTTPRequestHandler):
# other code here...
def do_POST(self):
if self.headers['Content-Type'].lower() != 'application/json':
self.send_error(400, explain="Only content of type application/json is accepted")
else:
# do something with the POST data
...可以满足我的需求,因为它返回一个400 Bad Request
错误并给出了解释。但是,这有一个前提条件,即发出POST
请求的端点客户端实际上会发送一个Content-Type
标头(如果您像我正在测试的那样直接发出curl
请求,这是“保证)。
我在这里遇到的问题是,我不知道如何实际告诉端点客户端服务器接受的数据类型。我总是可以强制要求人们在发布数据时总是指定标头,但是如果他们不想编写自己的自定义数据提交方法,那可能是有问题的。
有没有办法让此python HTTP请求处理程序告诉客户端服务器将为POST请求接受的内容类型?