Как определить, какие поля требуются REST API, из API?
Я работаю с сетевым устройством, которое имеет неопределенную документацию по API. Я в состоянии выполнить запросы PATCH и GET нормально, но POST не работает. В ответ я получаю ошибку состояния HTTP 422, в запросе JSON отсутствует поле, но я предоставляю обязательные поля, указанные в документации. Я попробовал модуль Python Requests и предоставленный производителем модуль PyCurl в их примере кода, но столкнулся с той же ошибкой.
Есть ли в REST API метод отладки, который возвращает обязательные поля и типы значений для определенного POST? Я говорю больше о том, что шаблон настроен, чтобы увидеть в запросе (например, JSON {str(ServerName) : int(ServerID)}
не то, что разработчик API мог создать.
1 ответ
Нет, такого не существует вообще. Некоторые службы поддерживают запрос OPTIONS для данного маршрута, который должен вернуть вам документацию о маршруте. Если вам повезет, это машина, сгенерированная из того же исходного кода, который реализует маршрут, поэтому она более точна, чем статическая документация. Однако он может просто вернуть очень простую сводку, например, какие HTTP-глаголы поддерживаются, что вы уже знаете.
Более того, некоторые службы могут поддерживать машинное описание API с использованием WSDL или WADL, хотя вы, вероятно, обнаружите это, только если служба также поддерживает XML. Это может быть лучше, потому что вы сможете найти библиотеку, которая сможет анализировать описание и сгенерировать локальную объектную модель сервиса для использования для взаимодействия с API.
Однако, даже если у вас есть файл OPTIONS или WADL, такая ошибка может возникнуть. Если документы не помогают, вам, вероятно, нужно связаться с сервисной службой поддержки для демонстрации вашей проблемы и обратиться за помощью.