Examples / How To

Change Endpoints Used In API Calls

4min
loading endpoints from account data services which interact with klevu's apis use a common class to provide endpoint urls for requests in the majority of cases, the domains provided will the ones needed to send or receive data the primary exception is when sending search requests (including for smart category merchandising ) where the search url varies by account note at time of writing, no sdk servies interact with search urls the baseurlsprovider class allows updating base urls from an account object (see examples > how to > account management > retrieve klevu account details ) either via the constructor or after instantiation \<?php declare(strict types=1); use klevu\phpsdk\model\account; use klevu\phpsdk\model\accountfactory; use klevu\phpsdk\provider\baseurlsprovider; $accountfactory = new accountfactory(); $account = $accountfactory >create( data \[ account field search url => 'eucs27v2 ksearchnet com', ], ); $baseurlsprovider = new baseurlsprovider( account $account, ); $searchurl = $baseurlsprovider >getsearchurl(); // eucs27v2 ksearchnet com $account >setsearchurl('eucs30v2 ksearchnet com'); $baseurlsprovider >updatefromaccount( account $account, ); $searchurl = $baseurlsprovider >getsearchurl(); // eucs30v2 ksearchnet com an example use case would be to load and cache klevu account information locally, which can be used to create account objects (via the accountfactory) for subsequent requests, rather than sending api requests on each page load injecting endpoints into services the baseurlsprovider instance can then be used by any service that interacts with klevu, all of which accept a baseloggerinterface instance via their constructor note if you are integrating into a modern framework, you should implement this via your dependency injection system \<?php declare(strict types=1); use klevu\phpsdk\model\account; use klevu\phpsdk\model\accountfactory; use klevu\phpsdk\provider\baseurlsprovider; use klevu\phpsdk\service\account\accountfeaturesservice; use klevu\phpsdk\service\account\accountlookupservice; use klevu\phpsdk\service\account\updatestorefeedurlservice; use klevu\phpsdk\service\analytics\collectservice as analyticscollectservice; use klevu\phpsdk\service\indexing\attributesservice; use klevu\phpsdk\service\indexing\batch\deleteservice as batchdeleteservice; use klevu\phpsdk\service\indexing\batchservice; $accountfactory = new accountfactory(); $account = $accountfactory >create( data \[ account field search url => 'eucs27v2 ksearchnet com', ], ); $baseurlsprovider = new baseurlsprovider( account $account, ); // account $accountfeatureservice = new accountfeaturesservice( baseurlsprovider $baseurlsprovider, ); $accountlookupservice = new accountlookupservice( baseurlsprovider $baseurlsprovider, ); $updatestorefeedurlservice = new updatestorefeedurlservice( baseurlsprovider $baseurlsprovider, ); // analytics $collectservice = new analyticscollectservice( baseurlsprovider $baseurlsprovider, ); // indexing $attributesservice = new attributesservice( baseurlsprovider $baseurlsprovider, ); $batchservice = new batchservice( baseurlsprovider $baseurlsprovider, ); $batchdeleteservice = new batchdeleteservice( baseurlsprovider $baseurlsprovider, ); source code reference model\ account model\ accountfactory provider\ baseurlsprovider provider\ baseurlsproviderinterface