Сокол для построения API

Как получить req в соколе в виде json, а не string как отдельные пары ключ-значение.

If {"a: 213", "b": 32435} Как мне убедиться, что a передано, а затем получить значение a

5 ответов

Я надеюсь, что следующий код поможет вам.

json_data = json.loads(req.stream.read())
try:
    value_a = json_data['a']
except KeyError as k:
    print 'a is not passed'

Я думаю, что следующий код поможет вам:

json_data = json.loads(req.stream.read())

ИЛИ, если вы хотите указать конкретный формат кодирования входных данных.

json_data = json.loads(req.stream.read().decode('utf8'))

Пожалуйста, дайте мне знать, что вам нужны дополнительные разъяснения.

Использование

stream = req.bounded_stream.read() 

или же

stream = req.stream.read()

Я создал класс BodyParser в качестве промежуточного программного обеспечения:

class BodyParser(object):
    def __init__(self, ctx):
        self.ctx = ctx
    def process_request(self, req, resp):
        if req.method.upper() in ['POST', 'PUT', 'PATCH']:
            stream = req.stream.read()
            if not stream:
                req.context['body'] = None
                return
            req.context['body'] = json.loads(stream)

Надеюсь, поможет

Не уверен, что это то, что вы просили, но вы можете преобразовать свой необработанный запрос (req) в json, используя:

if req.content_length:
   doc = json.load(req.stream)

после того, как вы переведете req/resp в JSON с помощью:

json.load(треб.поток)

вы можете посмотреть на вывод как на обычный словарь.

Другие вопросы по тегам