Итак, я использую вызовы API для получения некоторых json-данных, и я использую цикл for для выполнения вызова с использованием нескольких идентификаторов, которые будут возвращать разные данные на основе идентификатора пользователя. Поэтому в основном мы должны обновить разрешения для некоторых из наших пользователей, поэтому данные JSON выглядит как это для пользователей, не имеющих права доступа:Обработка ошибок API
{"meta":{"httpStatus":"401 - Unauthorized","error":{"errorMessage":"Insufficient
permissions.","errorCode":"ARH_8.5"},"requestId":null}}
и это для пользователей с правами доступа:
{"result":{"elements":[{"id":"dslkjafsadl","name":"Test","ownerId"
:"sdfadfsfsda","lastModified":"2016","isActive":true},
{"id":"dsafsad","name":"Test","ownerId":"sdfasdfa","lastModified":"2016","isActive":true}],"nextPage":null},"meta":{"httpStatus":"200 - OK","requestId":"3242343"}}
так мой вопрос в том, если у меня есть большой ответ со многими результатами как с разрешениями, так и без них, как я могу только вытащить идентификаторы из пользователей с разрешениями и исключить те, у которых нет разрешений.
Say ответ хранится в переменных «данных» и идентификаторы, что я ищу, будет храниться в «RequestID» это код, который я попробовал:
requestId = request_id = [element['requestId'] for element in data['result']['elements']]
из этого кода я получаю TypeError, и он не распознает «результат», потому что первым ответом является пользователь без правильных разрешений.
Лучший способ проверить код статуса HTTP из исходного запроса.Предположим, вы используете библиотеку 'запросов', чтобы выполнить GET для любого ресурса,' status_code' объекта 'request' будет содержать' 401' для отказа в разрешении. Конечно, вы можете использовать любую другую библиотеку. Если все остальное не удается, вы можете использовать тело там и проверить значение 'x ['meta'] ['httpStatus']. – sal