Workday Studio - запрос на отправку HTTP-запроса к API-интерфейсу поставщика с: не определен bean-компонент с именем http-token-auth
У меня есть интеграция с Workday studio для отправки запроса GET в API поставщика с использованием HTTP-компонента, но я получаю сообщение об ошибке ниже. У поставщика нет имени пользователя / пароля для подключения. Я должен подключиться с помощью токена. Кто-нибудь знает, как заставить это работать из студии для получения данных?
Причина: org.springframework.beans.factory.NoSuchBeanDefinitionException: не определен bean-компонент с именем http-token-auth.
Я отправил запрос разными способами: жестко запрограммировал URL с помощью токена, установил заголовки с помощью токена. Ниже приведены мои разные попытки.
Я не уверен, какую авторизацию Http это должно использовать. Там нет имени пользователя / пароля, только токен и URL для публикации с использованием CURL. Ниже показано, как выглядит студия со свойствами HTTP.
Ниже указано, что установлено в заголовке.
Кроме того, я могу получить данные с помощью SoapUI. Ниже приведен фрагмент запроса в SoapUI.
Ниже приведен необработанный запрос JSON в SoapUI, который успешно получает данные из API.
Любая помощь высоко ценится!!
Спасибо, -Ремо
2 ответа
К предисловию; Я не знаком с Workday Studio, и, кажется, нет никаких открытых документов, поэтому здесь может быть какой-то нюанс, который пропускает этот ответ.
Резюме
Рабочий день, ваш код или, возможно, какая-то используемая библиотека ссылаются на bean-компонент (см. Spring docs: Core Technologies), который не существует или не может быть найден.
Если вы не пишете здесь никакого Java-кода, это почти наверняка или проблема конфигурации, или ошибка в Workday Studio. Ниже приведены некоторые наблюдения, основанные на предоставленной вами информации. Но сначала дикая догадка.
Грубое предположение
Вероятно, что Workday обрабатывает это немного иначе, чем cURL или SoapUI. cURL и SoapUI делают что-то вроде следующего:
- Отправьте запрос GET на URL с параметрами и включите ключ API в заголовок
- Сервер отправляет желаемый ответ
Тем не менее, похоже, что Workday делает что-то вроде:
- Отправьте GET-запрос, используя сценарий перед авторизацией, используя тип-запроса: 'token'
- Сервер отвечает с правильным типом аутентификации, который его структура (предположительно Rails) использует для токенов; 'HTTP-токен-аутентификации'
- Рабочий день (ошибочно) предполагает, что сервер использует платформу Spring, и пытается загрузить правильный bean-тип, основанный на этом ответе
- Spring Framework Barfs, потому что нет такого боба
Я полагаю, что есть какой-то способ заставить Workday хорошо играть со стандартным API REST и просто предоставить ключ API на сервер поставщика, как он ожидает, вместо того, чтобы пытаться выполнить вызов / ответ.
Если это не так, то есть несколько более слабых возможностей ниже.
Нечетное Имя Бина
Имя компонента, указанное в ошибке: http-token-auth
, который находится в кебаб-кейсе. Соглашение о присвоении имен bean-компонентам - (lower-) camelCase, поэтому там, где это указано, возможно, использовался не тот регистр.
Это может быть конфигурация Workday Studio, файл конфигурации XML или какой-то другой написанный вами код, если таковой имеется.
конфигурация
Если имя бина правильное, то, скорее всего, есть другая проблема конфигурации. Spring может неявно обнаруживать компоненты-кандидаты, сканируя путь к классам (см. Документы Spring: сканирование путей к классам и управляемые компоненты) или загружая его из XML проекта. Проблема может быть:
- Путь сборки неверен (см. Этот ответ esaj, если вы незнакомы)
- Путь к классу неправильный, поэтому Spring просто не видит его. В этом случае это похоже на конфигурацию, специфичную для рабочего дня.
- Бин находится в проекте XML, но вложен. В этом случае он был бы доступен только для включающего компонента. Одним из решений этой проблемы является активация соответствующего профиля.
- Вопрос упаковки; если бин не будет включен в полученный развернутый jar, то возникнут проблемы. Это решение dawrutowicz следует применять в ряде случаев.
- Конфигурация проекта; все настройки на ваших скриншотах выглядят абсолютно корректно и должны работать нормально, поэтому в настройках вашего проекта может быть что-то скрытое
Ошибка в Workday Studio
Это кажется несколько менее вероятным, но всегда возможно. Если вы вообще не написали Java-код, то в коде Workday есть что-то, что обслуживает этот неожиданный http-token-auth или неправильно принимает его откуда-то еще и пытается загрузить бин, используя его.
Последние мысли
Поскольку вы пытаетесь работать с API поставщика, я настоятельно рекомендую вам попробовать сотрудничать с одним из инженеров. Гарантированно, у них есть по крайней мере один инженер, который раньше занимался сложными вопросами интеграции. У них будет больше информации об их API и, возможно, они смогут дать вам более непосредственный вклад в любую конфигурацию / код, которым вы сможете поделиться.
При отправке запроса Rest POST на сторонний веб-сервис из Workday Studio с использованием аутентификации Bearer было получено идентичное сообщение об ошибке.
Было решено установить тип вывода заголовка "message" вместо "rootpart". Это не ошибка в Workday Studio.
Workday Studio устанавливает тип выходного заголовка
С уважением, Шираз