Короткий ответ Ошибка в том, что request.get_json() при отсутствующем или некорректном JSON-теле по умолчанию может вернуть None (или выбросить исключение при force/неверном Content-Type), а код сразу обращается к data['name'] без проверки, вызывая TypeError/500. Как это работает подробнее request.get_json(silent=True) возвращает None вместо исключения, если тело не является валидным JSON или заголовок Content-Type не application/json. Без проверки на None следующее обращение data['name'] вызовет TypeError: 'NoneType' object is not subscriptable, что Flask превратит в ответ 500 Internal Server Error. Пример кода Что использовать на практике Практика. Правильный подход — явно проверять data is None (или использовать silent=False, который сам кидает 400 при ошибке парсинга, в зависимости от версии) и возвращать 400 Bad Request с понятным сообщением, а не пропускать проверку. Подводные камни Риск. Считают, что отсутствие тела запроса — это «исключительная ситуация уровня сервера», тогда как это стандартная ошибк