У меня есть некоторые идеи, которые могут вам помочь.
Swagger Spec упоминает allowMultiple
параметр в пункте 5.2.4 Parameter Object
allowMultiple
Другой способразрешить несколько значений для параметра «запрос».Если используется, параметр запроса может принимать значения через запятую.Поле может использоваться только в том случае, если paramType имеет значение «query», «header» или «path».
Это может быть тем, что вы хотите
Я попытался передать его в coreapi.Field
кактакие:
coreapi.Field(name="status", description="Statuses of the Requests", required=False, location='query', example='active', allowMultiple=True)
но это не работает
Затем я перебрал swagger-ui.js
и обнаружил эту строку
var isArray = paramType.toLowerCase() === 'array' || param.allowMultiple;
К счастьюдля нас coreapi.Field
- это просто namedtuple , который передает все необходимые параметры для подмены.Это выглядит так:
Field = namedtuple('Field', ['name', 'required', 'location', 'schema', 'description', 'type', 'example'])
Field.__new__.__defaults__ = (False, '', None, None, None, None)
Моя идея состоит в том, чтобы расширить его и использовать вместо coreapi.Field
.Я собираю обезьяны, потому что какая-то логика coreapi.Document
и coreapi.Link
заставляет нас делать это.
coreapi.Field = namedtuple('Field', coreapi.Field._fields + ('allowMultiple',))
coreapi.Field.__new__.__defaults__ = (False, '', None, None, None, None, False)
, а затем использовать это так:
coreapi.Field(name="status", description="Statuses of the Requests", required=False, location='query', example='active', allowMultiple=True)
К сожалению, все еще есть ошибка,но я решил опубликовать его в любом случае.Может быть, вместе мы сможем понять это.Я все еще работаю над этим и чувствую, что я почти на месте.
РЕДАКТИРОВАТЬ
Я пытался преодолеть ошибку, но постепенно становится очевидно, что еслиВы действительно нуждаетесь в этой функции, было бы проще просто раскошелиться на coreapi
библиотеку и отредактировать Field
, как я показал выше.