Pamācības
Ierobežojumi un laba prakse
Ko API ierobežo un kā izveidot integrāciju, kas paliek šajās robežās.
#Ierobežojumi
| Ierobežojums | Vērtība |
|---|---|
| Pieprasījuma izmērs | 27 MB |
| Attēli | 5 faili vienā pieprasījumā, katrs līdz 5 MB; JPEG, PNG, WebP vai GIF; ne vairāk kā 20 vienai telpai vai lokācijai |
| Saraksta lapas lielums | 1 līdz 200 (noklusējums 50) |
| Piekļuves tokena derīgums | 15 minūtes |
| Neveiksmīgas autentifikācijas | 10 piecās minūtēs no vienas IP adreses, pēc tam 429 |
Idempotency-Key | 1 līdz 200 rakstzīmes; atceras 24 stundas |
| Teksta lauki | Lokācijas nosaukums 100, apraksts un adrese 250; telpas nosaukums un apraksts 255; external_id 100 rakstzīmes |
| Laiks vienam pieprasījumam | Dažas sekundes. Pieprasījums, kas ilgst pārāk ilgi, tiek atbildēts ar 503. |
Pieprasījumu biežums
Šajā izmēģinājuma versijā nav stingra pieprasījumu biežuma ierobežojuma, un ierobežojumi var tikt ieviesti vēlāk. Lūdzu, esiet saprātīgi: dažus pieprasījumus sekundē pietiek, un grupēšana ar
PUT …/by-external-id/… ir labāka nekā visu nolasīt pirms katras ierakstīšanas.#Kataloga sinhronizēšana
- Katrai lokācijai un telpai glabājiet savu identifikatoru kā
external_id. - Kad jūsu sistēmā kaut kas mainās, izsauciet
PUT /v1/locations/by-external-id/{id}vaiPUT /v1/boxes/by-external-id/{id}ar mainītajiem laukiem. - Pieejamībai sūtiet pilnu pašreizējo skaitli (
available_units), nekad nevis izmaiņu: klienti var rezervēt, kamēr darbojas jūsu datu plūsma. - Iesniedziet jaunas telpas izskatīšanai, kad to saraksts
missingir tukšs. - Atsauces sarakstus nolasiet ne biežāk kā reizi dienā.
#Atkārtošana
Atkārtojiet pēc gaidīšanas laika beigām, 5xx un 429, ar pieaugošām pauzēm un to pašu Idempotency-Key:
JavaScript
async function send(url, options, tries = 5) {
const key = crypto.randomUUID(); // viena atslēga katrai darbībai
for (let attempt = 0; attempt < tries; attempt++) {
try {
const res = await fetch(url, {
...options,
headers: { ...options.headers, "Idempotency-Key": key },
});
if (res.status < 500 && res.status !== 429) return res; // gatavs (vai īsta kļūda, kas jālabo)
const wait = Number(res.headers.get("Retry-After")) * 1000 || 2 ** attempt * 1000;
await new Promise((r) => setTimeout(r, wait));
} catch {
await new Promise((r) => setTimeout(r, 2 ** attempt * 1000)); // tīkla kļūda
}
}
throw new Error("Atmetam pēc " + tries + " mēģinājumiem");
}#Laba prakse
- Vispirms pārbaudiet. Jaunu saturu izmēģiniet ar
?validate_only=true. - Esiet iecietīgi, lasot atbildes. Atbildēs var parādīties jauni lauki; ignorējiet tos, kurus nepazīstat.
- Apstrādājiet
412. Tas nozīmē, ka kāds ir mainījis objektu: nolasiet to vēlreiz un izlemiet. - Reģistrējiet
request_idkatram neveiksmīgam izsaukumam; tas ir ātrākais veids, kā mēs varam palīdzēt. - Laiki ir ISO 8601 formātā, UTC.