Использовать параметры из пользовательского декоратора для передачи в библиотеку декоратора? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть декоратор, который берет словарь и используется для проверки параметров, которые передаются в маршрут Sanic.

@check_parameters({
    'contact': {
        'type': 'int',
        'required': False
    },
    'name': {
        'type': 'string',
        'required': False
    }
})

Я также использую sanic_openapi для создания документов swagger. Как я могу использовать один и тот же вход для генерации строк @doc.consume()?

Прямо сейчас мои вызовы функций выглядят следующим образом:

@app.get("/customer/search")
@doc.summary('Search for customer')
@doc.consume(doc.String(name="name"))
@doc.consume(doc.Integer(name="contact"))
@check_parameters({
    'contact': {
        'type': 'int',
        'required': False
    },
    'name': {
        'type': 'string',
        'required': False
    }
})
async def search_customers(request):
    ....

Эта конкретная конечная точка действительно имеет несколько полей, по которым вы можете искать, поэтому как consume() список отдельных декораторов, так и @check_parameters декоратор тихий долго (и повторяется).

Я хочу устранить большую часть этого повторения. Можно ли как-нибудь сгенерировать строки .consume()?

...