Principaux aspects de l'intégration · Les guides
Je commence
L'authentification, la première demande, les erreurs localisées, la pagination et un déploiement sécurisé de la production.
Commencez par un jeton dédié et une opération de lecture. Ajoutez des mutations seulement après que le comportement de manipulation et de réessayer error aient été testés.
Des développeurs et intégrateurs de backend01
L'authentification et le stockage des jetons
Envoyez le jeton API directement dans l'en-tête Authorization sans préfixe Bearer.
Créer un jeton séparé pour chaque intégration. Vous pouvez ensuite révoquer une connexion sans interrompre les autres et accorder uniquement les autorisations dont elle a besoin.
Gardez le jeton dans des secrets du côté du serveur. Ne jamais l'envoyer dans le navigateur JavaScript, une application mobile, une URL, des journaux ou des analyses.
Ne pas ajouter Bearer ou Basic. La valeur Authorization est le jeton SelSup lui-même.
curl --request GET 'https://api.selsup.ru/api/brand/find?limit=50&page=1' \
--header 'Authorization: YOUR_API_TOKEN'
Points d'extrémité API connexes
GET/api/brand/findDemande de test sécurisé
02
Erreurs et localisation du message
Branchez sur le champ stable error et utilisez localMessage uniquement pour la sortie lisible par l'homme.
Une application error contient normalement error, localMessage et params. Le serveur traduit XPRO TECTED4X en utilisant le champ lang de l'utilisateur qui possède le jeton.
Le langage de documentation et Accept-Language ne modifient pas la localisation error. Ne jamais comparer localMessage dans le code ou le maintenir comme un état de machine.
Enregistrez l'état de HTTP, error, params, le temps de la demande et votre identifiant de corrélation.
{
"error": "brand_already_exists",
"localMessage": "Brand Base already exists",
"params": {
"name": "Base"
}
}
03
Paginage de grandes collections
Utilisez un tri stable et arrêtez lorsque la page suivante est fausse ou que la page retournée est plus courte que la limite.
count=true peut déclencher une requête de comptage supplémentaire. Envoyez-la sur la première demande seulement lorsque le total est réellement nécessaire.
Les données peuvent changer entre les pages. Pour une synchronisation récurrente, trier par un identifiant immutable et les changements de processus dans un flux incrémentiel séparé.
let page = 1;
let hasNextPage = true;
while (hasNextPage) {
const url = new URL('https://api.selsup.ru/api/brand/find');
url.searchParams.set('limit', '500');
url.searchParams.set('page', String(page));
url.searchParams.set('sortBy', 'BRANDID');
url.searchParams.set('ascending', 'true');
const response = await fetch(url, {
headers: { Authorization: process.env.SELSUP_API_TOKEN }
});
if (!response.ok) throw await response.json();
const result = await response.json();
await savePage(result.rows);
hasNextPage = result.hasNextPage;
page += 1;
}
Points d'extrémité API connexes
GET/api/brand/findExemple de recherche pageGET/api/product/findRecherche de produits
04
Liste de contrôle de la production
- 1
Lire et écrire séparément
Valider d'abord les demandes GET. Utilisez des entités de test et une étape de confirmation explicite pour les mutations.
- 2
Configurer les délais et les retries
Une POST sans votre clé d'idempotence peut créer un duplicate.
- 3
Limiter la concurrentialité
Respectez les limites des points d'extrémité et utilisez une file d'attente avec un back-off exponentiel et un petit jitter aléatoire.
- 4
Concilier les résultats
Après une synchronisation en masse, comparez les nombres et les identifiants d'échantillon, puis déplacez les divergences dans une file d'attente séparée.
L'essai envoie la demande au compte du propriétaire du jeton. La documentation ajoute une confirmation pour écrites, mais vous devriez toujours utiliser les dossiers de test.