Python 3 http.server:指定接受的内容类型吗?

时间:2018-07-30 19:01:58

标签: python-3.x server httpserver

我有一个运行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请求接受的内容类型?

0 个答案:

没有答案