У меня есть ASP.net web API. Я хотел бы вызвать другой API, который имеет токен аутентификации внутри моего API.
Поток кода выглядит следующим образом:
Вызывается мой API → Получение маркера аутентификации из стороннего API → Вызов нужных методов из стороннего API.
Я не могу решить, что если к моему API будут обращаться 100 раз, то я сделаю 100 вызовов для метода GetToken()
и еще 100 для нужного метода в стороннем API, что кажется накладным и пустой тратой времени. Должен ли я реализовать логику для проверки того, что токен все еще доступен?
Сторонний API может использовать для аутентификации общеизвестный механизм, например OAuth 2. В OAuth 2 токен создается один раз и используется для нескольких запросов до истечения срока его действия. Политика истечения срока действия зависит от фактической конфигурации службы и способа взаимодействия с ней (из-за скользящего срока действия и абсолютного срока действия).
В этом случае вы усложняете себе работу. Вместо того, чтобы самостоятельно реализовывать обработку токена, возьмите существующую библиотеку OAuth 2 (или любую другую, используемую API). Библиотека скроет основную сложность, включая генерацию токена и его обновление: вам нужно будет указать идентификатор клиента и пароль, а остальную часть она сделает сама. Полезно понимать, что происходит под капотом (в основном из-за возможной дырявой абстракции, а также для вашего личного любопытства), но не абсолютно необходимо в начале.
Если вместо этого API использует собственный механизм:
Свяжитесь с компанией и спросите их, планируют ли они перейти на более стандартный подход. Обычно самодельные механизмы ненадежны, плохо спроектированы и плохо обслуживаются. Альтернативой, которую вам необходимо рассмотреть, может быть переход на API от другой компании.
Если вы не планируете переходить на что-либо стандартное и не можете выбрать другого поставщика API, спросите у компании, могут ли они хотя бы предоставить вам клиентскую библиотеку для выбранного вами языка. Часто они это делают, что экономит вам много работы.
Если они не могут предоставить какую-либо клиентскую библиотеку, обратитесь к их документации. В нем должно быть указано, как часто вы можете запрашивать новый токен. Иногда запрашивать токен при каждом запросе будет нарушением политики, и в конечном итоге вас забанят, если вы это сделаете.
Если документации нет, вам действительно следует перейти к другому поставщику API. Использование недокументированного API без поддержки и самодельной аутентификации просто неправильно.