Собственно продолжаю конспектировать/делиться полезными знаниями полученными из документации. В очередной раз убеждаюсь что читать доки полезно (но заставить делать себя это не могу - лень :sad:). Вот наткнулся на такую интересную страницу [url=https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_named_credentials.htm]Named Credentials as Callout Endpoints[/url] Простым телодвижением можно сократить гору кода и обеспечить какую-то гибкость в настройках.
Также можно написать кастомный Auth provider и использовать в Named Credentials.
Но лично мне нравится вариант с хранением access tokena в орг кеше. И при callout-е мы достаем из кеша токен и шлем запрос. Если получаем ошибку invalid token, допустим, то шлем запрос на получение токена и перезаписываем с орг кеше. Таким образом мы сокращаем количество посылаемых http зарпосов на получение access токена. Потому что, на сколько я знаю, в случае с Named credentials, у тебя перед каждым callout-ом будет идти запрос на получение токена(сдесь я могу, возможно, ошибаться :smile:, но я по-моему что-то такое тестировал или читал :smile:)
[quote="alex123"]в орг кеше[/quote] А что это за кеш такой? Что-то с таким понятием еще не сталкивался.
https://trailhead.salesforce.com/content/learn/modules/platform_cache
Кешировать нужно всегда, и если поддерживается expiration Date, то активно его юзать иначе можете упасть по дневным лимитам API на огре крупного клиента
[quote="wilder"]иначе можете упасть по дневным лимитам API на огре крупного клиента[/quote] В Salesforce нету лимита на исходящие http requests, только на входящие.
[quote="alex123"]https://trailhead.salesforce.com/content ... rm_cache[/quote] ФИГА СЕ! Даже не знал что есть такая прикольная штука!!!! Никто из клиентов не использовал и даже не заикался. Я буквально где-то полгода назад жаловался что в SF нет какого-нибудь простого key-value хранилища. Очень нравилось использовать на питоне тот же memcached или redis. Но никто даже не намекнул на Platform Cache. Прикольная штукенция. Буду изучать глубже, какие есть подводные камни в использовании. Это ж какие интересные идеи можно мутить для межсессионного взаимодействия без использования БД. Вот только напрягает что для dev орга фича триальная и может просто не работать.
[quote="alex123"]В Salesforce нету лимита на исходящие http [/quote] Да это так, но не все так однозначно:) Например если у клиента 2 SF прода и нужно организовать интеграцию между ними.
[quote="wilder"][quote="alex123"]В Salesforce нету лимита на исходящие http [/quote] Да это так, но не все так однозначно:) Например если у клиента 2 и более SF прода и нужно организовать интеграцию между ними. [/quote]
Ну да, точно. У меня просто опыт не 10 лет:smiley: С таким не сталкивался пока что)
Ну да, точно.
У меня просто опыт не 10 лет С таким не сталкивался пока что)
[quote="alex123"]Ну да, точно. У меня просто опыт не 10 лет:smiley: С таким не сталкивался пока что)[/quote] Другой пример крупный telecom клиент, у него куча разных вебсервисов. Если бездумно каждый раз пытаться авторизовываться блокируют, как попытку DDOS атаки. Ясное дело что можно использовать на стороне сервиса white list IP, и это решит ситуацию, но лучше если сам алгоритм буде оптимизированным. IP адреса кстати тоже могут измениться (SF Instances)