как проверить наличие ключей в полезной нагрузке в api restful в фляге - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть сложные полезные данные, используемые в API, как показано ниже.Существует ли способ проверки приведенных ниже ключей в образце полезной нагрузки (данные запроса приведены в POST или PUT)

{
  "adduser": {
    "usergroup": [
      {
        "username": "john",
        "userid": "kk8989",
        "user_contact": 9343454567,
        "manager_name": "sam",
        "manager_contact": 9343454597,
        "env": "dev",
        "partner": {
          "name": "macy",
          "address": "radom address",
          "assets": [
            "iphone",
            "tesla"
          ],
          "profile": {
            "linkedin": "XXXX",
            "facebook": "XXXX"
          },
          "children": [
            {
              "name": "tim",
              "address": "XXXX"
            },
            {
              "name": "tim",
              "address": "XXXX"
            },
            {
              "name": "tim",
              "address": "XXXX"
            }
          ]
        }
      }
    ]
  }
}

Как проверить вышеуказанную повторную загрузку перед ее использованием в приложении.

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Вы можете попробовать использовать пакеты attr и cattr:

import attr, cattr


@attr.s
class Response:
    name = attr.ib()
    val = attr.ib(type=int, default=5)


d = cattr.structure({'name': 'some name'}, Response)
print('-->', d)

Если вы удалите значение по умолчанию из атрибута val, вы получите исключение TypeError.Итак, вам решать, как справиться с отсутствием ключей.В любом случае, читайте пакеты документов.

0 голосов
/ 27 декабря 2018

Я создаю проверочную библиотеку с именем kanpai .Он все еще в процессе, вы можете проверить.

0 голосов
/ 14 декабря 2018

Входной json обрабатывается так же, как dict в python, для проверки ключей или значений вы можете просто работать со словарем.Например, чтобы проверить, содержит ли он «школьный» ключ, вы можете использовать if 'school' in json_dict:

@app.route('/', methods=["PUT", "POST"])
def new():
    json_dict = request.get_json(force=True)
    if 'school' not in json_dict:
           return 'Error, school not found'

Вы также можете обернуть запрос request.get_json в попытку, за исключением лучшей обработки исключений.

Выможете использовать библиотеку jsonschema для проверки вашей схемы / модели json.проверьте этот пост здесь, описывая функцию validate () из jsonschema.

http://code.activestate.com/recipes/579135-validate-data-easily-with-json-schema/

...