анализ данных между флаттером и Flask REST API - PullRequest
1 голос
/ 23 января 2020

Я пытаюсь отправить POST-запрос из моего приложения флаттера в Flask REST API, тестирование API с помощью POST MAN не вызывает проблем, но при флаттере я получаю сообщение об ошибке флаттера, например:

I / флаттер (6378): FormatException: неожиданный символ (в символе 1) I / флаттер (6378): I / флаттер (6378): ^

и в Flask APP вот так:

[2020-01-23 11: 42: 32,517] ОШИБКА в приложении: исключение на / карты [POST] Traceback (последний вызов был последним): файл "/home/shaukat/.local/ lib / python3 .7 / site-packages / flask / app.py ", строка 2311, в файле wsgi_app response = self.full_dispatch_request () Файл" /home/shaukat/.local/lib/python3.7/site -packages / flask / app.py ", строка 1834, в full_dispatch_request rv = self.handle_user_exception (e) Файл" /home/shaukat/.local/lib/python3.7/site-packages/flask/app.py ", строка 1737, в файле handle_user_exception reraise (exc_type, exc_value, tb)" "/home/shaukat/.local/lib/python3.7/site-packages/flask/_compat.py", строка 36, в рейз рейз значение F "/home/shaukat/.local/lib/python3.7/site-packages/flask/app.py", строка 1832, в файле full_dispatch_request rv = self.dispatch_request () "/home/shaukat/.local /lib/python3.7/site-packages/flask/app.py ", строка 1818, в dispatch_request вернуть файл self.view_functionsrule.endpoint" / home / shaukat / Projects / udemy flask rest API и python / rest -api-section-master / section3 / app.py ", строка 19, в create_card 'id': request_data [" id "], TypeError: объект 'NoneType' недопустим 127.0.0.1 - - [23 / января / 2020 11:42:32] "POST / cards HTTP / 1.1" 500 - Мой код в флаттере:

Future<void> addNewCard(NewCard product) async {
const url = 'http://10.0.2.2:5000/cards';
try {
  final response = await http.post(
    url,
    body: json.encode({
      'id': product.id,
      'cardNo': product.cardNo,
      'cardType': product.cardType,
      'amount': product.amount,
    }),
  );
  final newProduct = NewCard(
    id: json.decode(response.body)['id'],
    cardNo: product.cardNo,
    cardType: product.cardType,
    amount: product.amount,
  );
  print(newProduct);
  _newCard.add(product);
  // _items.insert(0, newProduct); // at the start of the list
  notifyListeners();
} catch (error) {
  print(error);
  throw error;
}}

код в python Flask:

@app.route('/cards', methods=['POST'])
def create_card():
    request_data = request.get_json()
    new_cards = {
        'id': request_data["id"],
        'cardNo': request_data["cardNo"],
        'cardType': request_data["cardType"],
        'amount': request_data["amount"],
   }
   cards.append(new_cards)
   return jsonify(cards)

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Я, в конце концов, нашел решение в комментарии к этому сообщению Тело запроса POST Flutter не отправлено

Мне пришлось добавить headers: {"Content-Type": "application/json"} в мой запрос на публикацию. спасибо за вашу помощь

0 голосов
/ 23 января 2020

строка 19, в create_card 'id': request_data ["id"], TypeError: объект 'NoneType' недопустим

Как видите, сервер не может получить данные / разбор это. Я бы посоветовал отладить его внутри REST-сервера и проверить, получаете ли вы даже значения. Я понимаю, что postman работает для вас, но как только вы поймете, что вы даже получаете на сервере, это будет легче исправить что трепетание посылает. Я предполагаю, что product.id (код флаттера) - это целое число, а не строка. Пожалуйста, пришлите более подробную информацию об отладке, чтобы помочь решить эту проблему. удачи.

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