Fichiers de configuration
Requests via proxy
Retail React App
Rendu
Routage
Composants spéciaux
Gestion des états
Les compétences pour réussir
Ask the Community
La fonctionnalitĂ© proxy de Managed Runtime vous permet dâacheminer les requests vers des API hĂ©bergĂ©es sur diffĂ©rents domaines via le mĂȘme domaine que votre boutique.

Pourquoi utiliser le mĂȘme domaine que votre boutique ? Imaginez que votre boutique en ligne est hĂ©bergĂ©e sur www.northerntrailoutfitters.com et que vous souhaitez demander lâAPI B2C Commerce Ă api.commercecloud.salesforce.com Lancer cette request sans utiliser de proxy implique des Ă©tapes de configuration supplĂ©mentaires et ce nâest pas aussi rapide et aussi facile Ă observer quâavec un proxy. Comparons les deux approches :
| Sans proxy | Avec proxy |
|---|---|
| Vous devez configurer le serveur dâAPI pour quâil rĂ©ponde avec des en-tĂȘtes CORS (cross-origin resource sharing). | Aucune configuration supplĂ©mentaire nâest requise pour CORS. |
| Les requests dâAPI nĂ©cessitent une request de contrĂŽle prĂ©alable, ce qui ralentit les performances. | Aucune request de rĂ©seau supplĂ©mentaire nâa Ă©tĂ© lancĂ©e. |
| Si le serveur dâAPI ne met pas les rĂ©ponses en cache, vous perdez une occasion dâamĂ©liorer considĂ©rablement les performances. | Vous pouvez demander au CDN de Managed Runtime de mettre en cache des requests spĂ©cifiques. |
| Si vous nâavez pas accĂšs aux journaux du serveur dâAPI, il est difficile de mesurer son impact sur les performances globales. | Toutes les requests dâAPI qui sont routĂ©es par le CDN de Managed Runtime via des proxys sont consignĂ©es. |
Maintenant que vous comprenez lâintĂ©rĂȘt dâutiliser des proxys, explorons les diffĂ©rentes mĂ©thodes permettant de les configurer.
Pendant le dĂ©veloppement local, les proxys peuvent ĂȘtre configurĂ©s en modifiant le tableau mobify.ssrParameters.proxyConfigs dans <PROJECT_DIR>. Par exemple, pour configurer un proxy pour lâAPI B2C Commerce :
1{
2 "proxyConfigs": [
3 {
4 "host": "<SHORT_CODE>.api.commercecloud.salesforce.com",
5 "path": "api"
6 }
7 ]
8}Le tableau proxyConfigs contient des objets qui définissent une configuration de proxy avec les propriétés suivantes :
host : lâhĂŽte dâorigine qui reçoit vos requests.path : le nom utilisĂ© dans le chemin de la request pour identifier ce proxy.Pour effectuer une request via proxy dans le code de votre application, suivez ce schĂ©ma lors de la crĂ©ation des chemins de request : <PROXY_PATH>.
Choisissez des chemins proxy qui vous permettent de reconnaĂźtre facilement les API que vous utilisez.
Tip
Examinons un exemple de request qui utilise api comme valeur de path. Par dĂ©faut, les projets créés avec PWA Kit incluent une configuration proxy qui associe le chemin api Ă lâAPI B2C Commerce.
1import {getAppOrigin} from 'pwa-kit-react-sdk/utils/url'
2
3// `getAppOrigin` returns the correct origin for both local development and Managed Runtime environments.
4fetch(`${getAppOrigin()}/mobify/proxy/api/categories/bikes`)Lorsque vous modifiez la configuration du proxy pendant le développement local, vous devez redémarrer votre serveur de développement local pour que les modifications soient prises en compte.
Managed Runtime ignore les paramĂštres de proxy dans les fichiers de configuration. Au lieu de cela, les proxys doivent ĂȘtre configurĂ©s Ă lâaide de Runtime Admin ou de lâAPI Managed Runtime.
Pour configurer les proxys pour un environnement Managed Runtime Ă lâaide de notre outil dâadministration Web, procĂ©dez comme suit :

Vous pouvez Ă©galement configurer des proxys pour les environnements Managed Runtime par programmation Ă lâaide du point de terminaison projects_target_partial_update. (LâAPI Managed Runtime utilise souvent le terme « target », soit cible, au lieu dâenvironnement, mais les deux termes font rĂ©fĂ©rence Ă la mĂȘme chose).
Voici un exemple de request qui met Ă jour un environnement pour inclure une configuration de proxy pour les chemins dâaccĂšs api et ocapi :
1curl "https://cloud.mobify.com/api/projects/$PROJECT/target/$ENVIRONMENT/" \
2 --request 'PATCH' \
3 --header "Authorization: Bearer $API_KEY" \
4 --data '{
5 "ssr_proxy_configs": [
6 {
7 "host": "api.commercecloud.salesforce.com",
8 "path": "api",
9 },
10 {
11 "host": "aaaa-001.dx.commercecloud.salesforce.com",
12 "path": "ocapi"
13 }
14 ]
15 }'Lors de la crĂ©ation ou de la mise Ă jour dâenvironnements, le corps de la request JSON accepte un tableau dâobjets de configuration de proxy Ă partir dâun champ appelĂ© ssr_proxy_configs. Les objets de configuration proxy incluent host et path, comme dans les fichiers de configuration.
Pour Ă©viter les temps dâarrĂȘt, les Ă©tapes dâajout ou de suppression des proxys dans un environnement de production doivent respecter un ordre prĂ©cis.
Pour ajouter un proxy Ă un environnement de production :
Pour supprimer un proxy dâun environnement de production :
Dans le dĂ©veloppement local, vous pouvez remplacer les configurations de proxy Ă lâaide de variables dâenvironnement.
DĂ©finissez une variable dâenvironnement appelĂ©e SSR_PROXY1 pour remplacer le premier Ă©lĂ©ment du tableau proxyConfigs. DĂ©finissez-en une appelĂ©e SSR_PROXY2 pour remplacer le deuxiĂšme Ă©lĂ©ment, et ainsi de suite.
Voici comment cela fonctionne : si la variable dâenvironnement SSR_PROXY1 est dĂ©finie sur https://api-staging.example.com/api, elle remplace le premier Ă©lĂ©ment du tableau proxyConfigs par lâobjet de configuration de proxy suivant :
1{
2 "host": "api-staging.example.com",
3 "path": "api"
4}Ces variables dâenvironnement sont couramment utilisĂ©es avec la commande npm start lors du dĂ©veloppement local pour utiliser diffĂ©rentes instances de lâhĂŽte de lâAPI, telles que staging ou production. Voici un exemple qui remplace le premier objet de configuration du proxy afin que le chemin api route les requests vers une instance staging :
1SSR_PROXY1=https://api-staging.example.com/api npm startUne fois les paramĂštres de proxy configurĂ©s, vous pouvez les consulter Ă lâaide de la fonction utilitaire getProxyConfigs du SDK React de PWA Kit. Par exemple, vous pouvez utiliser un identifiant client diffĂ©rent en fonction de lâenvironnement dans lequel votre code est exĂ©cutĂ© :
1import {getProxyConfigs} from 'pwa-kit-react-sdk/ssr/universal/utils.js'
2
3const HOST_TO_CLIENT_ID = {
4 'api-staging.example.com': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
5 default: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
6}
7
8const CLIENT_ID = (function getClientId() {
9 const {host} = getProxyConfigs().find((c) => c.path === 'api')
10 return HOST_TO_CLIENT_ID[host] || HOST_TO_CLIENT_ID['default']
11})()Lorsquâune request est mise en proxy, la request Ă lâorigine et la rĂ©ponse Ă partir de lâorigine sont toutes deux modifiĂ©es pour quâelles fonctionnent de maniĂšre transparente avec votre code dâapplication.
Les exemples fournis dans cette section supposent que lâapplication est hĂ©bergĂ©e Ă lâadresse www.northerntrailoutfitters.com et quâelle est configurĂ©e pour acheminer les requests via proxy vers api.commercecloud.com..
Note
Les modifications suivantes sont appliquĂ©es Ă la request avant de lâenvoyer Ă lâhĂŽte :
X-Mobify: true.Les requests par proxy transmettent tous les paramĂštres et en-tĂȘtes de chaĂźne de requĂȘte, y compris les cookies.
Les modifications suivantes sont appliquĂ©es Ă la rĂ©ponse avant de lâenvoyer au client :
Location de la rĂ©ponse, lâhost correspond Ă lâhost du proxy, alors cet host est prĂ©fixĂ© par <PROXY_PATH>.Set-Cookie dont le domain correspond Ă lâhost du proxy, ils sont modifiĂ©s pour correspondre Ă ce dernier. Par exemple, Set-Cookie: key=val; domain=api.commercecloud.com devient Set-Cookie: key=val; domain=www.northerntrailoutfitters.com.Access-Control-Allow-Origin dont la valeur correspond Ă lâhost du proxy, il est modifiĂ© en Access-Control-Allow-Origin: https://www.northerntrailoutfitters.com.Pour tester vos modifications, crĂ©ez une configuration de proxy avec lâhĂŽte httpbin.org. Si vous lancez une request par le biais de ce proxy, il renvoie les en-tĂȘtes quâil reçoit.
Par dĂ©faut, les requests passant par un proxy ne sont pas mises en cache par le CDN. Cette valeur par dĂ©faut permet dâutiliser les requests de proxy de maniĂšre transparente dans votre code, sans avoir Ă vous soucier de problĂšmes de mise en cache des rĂ©ponses.
Si vous souhaitez vraiment quâune request de proxy soit mise en cache par le CDN, modifiez le prĂ©fixe du chemin utilisĂ© dans votre request pour changer proxy en caching.
Les proxys de mise en cache ne peuvent pas ĂȘtre utilisĂ©s avec lâAPI B2C Commerce. Utilisez plutĂŽt sa fonctionnalitĂ© de mise en cache au niveau web cĂŽtĂ© serveur.
Note
Les requests via proxy en cache diffĂšrent des requests via proxy standard :
Cookie est supprimé.Les réponses en cache diffÚrent des réponses standard :
Set-Cookie sont supprimĂ©s.Les rĂ©ponses mises en cache comprennent les en-tĂȘtes HTTP suivants, de sorte que lorsque les valeurs de ces en-tĂȘtes varient, les rĂ©ponses sont mises en cache sĂ©parĂ©ment :
AcceptAccept-CharsetAccept-EncodingAccept-LanguageAuthorizationRangeLes rĂ©ponses qui comprennent dâautres en-tĂȘtes HTTP ne sont pas mises en cache sĂ©parĂ©ment lorsque leurs valeurs varient.
Les contraintes des proxys sont diffĂ©rentes de celles du serveur dâapplications.
Cookie. Les rĂ©ponses des proxys peuvent inclure lâen-tĂȘte Set-Cookie.HEAD, GET et OPTIONS. Les requests POST ne sont pas prises en charge.Maintenant que vous comprenez comment et pourquoi utiliser les proxys dans votre application de commerce, continuez Ă explorer la documentation de PWA Kit.