Неправильный запрос iOS 400 для Flask + Zappa - PullRequest
0 голосов
/ 27 апреля 2018

Я развертываю простое приложение Flask с Zappa на AWS Lambda, но сталкиваюсь с проблемами.

Я отправляю запрос POST на https://aws-ip-lambda-stuff.com/prod/chats/store, который вызывает:

@app.route('/chats/store/', methods=['POST'])
def store_chats():
    if request.form['username'] is not None and request.form['password'] is not None \
            and request.form['chats'] is not None:

        username = request.form['username']
        password = request.form['password']
        chats = request.form['chats']

        response = db.get_chats(username)
        db.upsert_chats(username, password, chats)

        if 'Item' not in response:
            old_chats = ""
        else:
            old_chats = response['Item']['chats']

        if old_chats != chats:
            db.upsert_read_chats(username, False)

        return jsonify({
            'error': 0,
            'message': 'success',
            'chats_updated': old_chats != chats
        })

    else:
        abort(401)

Если я использую Почтальон, я могу заставить запрос работать, однако, используя собственную библиотеку запросов iOS Swift, она выдает ошибку 400 BAD REQUEST, которую я вообще не смог отсортировать.

Имеет ли это отношение к Lambda, iOS, Zappa? Колба? У кого-нибудь есть идеи?

Спасибо

1 Ответ

0 голосов
/ 28 апреля 2018

Эти 400 ошибок обычно означают, что вы не отправляете в форму данные, которые ожидает колба. Если вы отправите пустую форму, следующая строка вызовет ошибку 400, поскольку «имя пользователя» отсутствует в отправленной форме, но все еще ожидается в форме.

if request.form['username'] is not None:

Если вы хотите проверить, был ли предоставлен параметр в форме, используйте вместо этого:

if 'username' in request.form:
    do_stuff()
else:
    abort(401)

Это все равно, что пытаться получить доступ к несуществующей клавише 'c' в следующем словаре {'a': 2, 'b': 3}, но вместо броска KeyError он дает 400 Error

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...