Python Flask Restful能否接受不区分大小写的参数名称?

Python Flask Restful能否接受不区分大小写的参数名称?,python,flask,flask-restful,Python,Flask,Flask Restful,如果我使用Flask Restful执行此操作: parser = reqparse.RequestParser() parser.add_argument('group', type=str, help='Please specify a valid group') 然后解析器将接受参数group=X,但不接受group=X或group=X 在获取参数名称时,是否有方法使其不区分大小写 (reqparse.Argument类有一个名为case_sensitive的参数,但不幸的是,这只会使值

如果我使用Flask Restful执行此操作:

parser = reqparse.RequestParser()
parser.add_argument('group', type=str, help='Please specify a valid group')
然后解析器将接受参数
group=X
,但不接受
group=X
group=X

在获取参数名称时,是否有方法使其不区分大小写


reqparse.Argument
类有一个名为
case_sensitive
的参数,但不幸的是,这只会使值不区分大小写(通过使它们小写)。它不影响参数名称。

将不同的
参数
类传递给
请求解析器
,该类将参数包装在不区分大小写的
MultiDict
子类中

class CaseInsensitiveMultiDict(MultiDict):
    def __init__(self, mapping=None):
        super().__init__(mapping)
        # map lowercase keys to the real keys
        self.lower_key_map = {key.lower(): key for key in self}

    def __contains__(self, key):
        return key.lower() in self.lower_key_map

    def getlist(self, key):
        return super().getlist(self.lower_key_map.get(key.lower()))

    def pop(self, key):
        return super().pop(self.lower_key_map.get(key.lower()))


class CaseInsensitiveArgument(Argument):
    def source(self, request):
        return CaseInsensitiveMultiDict(super().source(request))

parser = RequestParser(argument_class=CaseInsensitiveArgument)
通过将
参数
实例传递给
添加参数
,而不是关键字,仍然可以使用区分大小写的参数

MultiDict
子类实现的大小写对解析器的用例不敏感,不适合作为一般实现