& ldquo; 405 Метод не разрешен & rdquo; ошибка при попытке POST [дублировать]

Проблема в том, что вы пытаетесь await массива. Это не делает то, что вы ожидаете.

Когда объект, переданный в await, не является Promise, await просто возвращает значение as-is немедленно, а не пытается его решить. Так как вы передали await массив (объектов Promise) здесь вместо Promise, значение, возвращаемое await, - это просто массив, который имеет тип Promise[].

Что вам нужно сделать здесь вызывается Promise.all в массиве, возвращаемом map, чтобы преобразовать его в одно обещание до await.

Согласно документам MDN для Promise.all :

Метод Promise.all(iterable) возвращает обещание, которое разрешает, когда все обещания в итерабельном аргументе разрешены или отклоняются с учетом причины, по которой было отклонено первое обещание, которое отклоняет

blockquote>

Итак, в вашем случае:

var arr = [1, 2, 3, 4, 5];

var results: number[] = await Promise.all(arr.map(async (item): Promise => {
    await callAsynchronousOperation(item);
    return item + 1;
}));

Это решит конкретную ошибку, с которой вы сталкиваетесь здесь.

3
задан Phil27 18 January 2016 в 11:58
поделиться

1 ответ

Вы должны добавить «POST» в принятые методы объявления маршрута. Вы поместили его в функцию.

@app.route('/test', methods=['GET', 'POST'])
def test():
    if request.method=='GET':
        return('<form action="/test" method="post"><input type="submit" value="Send" /></form>')

    elif request.method=='POST':
        return "OK this is a post method"
    else:
        return("ok")

Смотрите: http://flask.pocoo.org/docs/0.10/quickstart/

8
ответ дан Anarkopsykotik 21 August 2018 в 19:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: