Я пытаюсь написать простой серверный интерфейс для приложения python3, используя спокойный протокол на основе JSON.Пока что bottle кажется наилучшим подходящим фреймворком для этой задачи (он поддерживает python3, хорошо обрабатывает диспетчеризацию методов и легко возвращает JSON.) Проблема заключается в анализе JSON во входном запросе.
В документации упоминаются только request.fields
и request.files
, оба, как я полагаю, относятся к данным multipart / form-data.Никаких упоминаний о непосредственном доступе к данным запроса.
Посмотрев на исходный код, я вижу request.body
объект типа BytesIO.json.load
отказывается действовать напрямую, умирая в json lib с can't use a string pattern on a bytes-like object
.Правильный способ сделать это может состоять в том, чтобы сначала декодировать байты в символы Юникода, в зависимости от того, какая кодировка была указана в заголовке HTTP Content-Type
.Я не знаю, как это сделать;Я могу видеть класс StringIO и предположить, что он может содержать буфер символов вместо байтов, но не вижу способа декодирования BytesIO в StringIO, если это вообще возможно.
Конечно, это можеттакже возможно прочитать объект BytesIO в строку байтов, затем декодировать его в строку перед передачей его в JSON-декодер, но если я правильно понимаю, это нарушает хорошее поведение буферизации всего этого.
ИлиЕсть ли лучший способ сделать это?