Netværksfejl, timeouts og andre forbigående fejl kan efterlade dig i tvivl om, hvorvidt en request rent faktisk nåede frem til Smart Send. Idempotency lader dig gentage sådanne requests sikkert, uden risiko for at booke den samme forsendelse to gange eller skabe dublerede ressourcer.Documentation Index
Fetch the complete documentation index at: https://docs.smartsend.io/llms.txt
Use this file to discover all available pages before exploring further.
Sådan fungerer idempotency
Idempotency er opt-in. For at aktivere det skal du inkludere enIdempotency-Key-header på en write-request:
Example
Idempotency-Key-header, bliver ikke deduplikeret. Hver enkelt behandles uafhængigt.
Idempotency gælder for write-operationer (
POST og DELETE). Læseoperationer (GET) er allerede sikre at gentage, så de ignorerer headeren. Når en gemt respons gentages, inkluderer API’et en Idempotency-Replayed: true-responseheader, så du kan skelne en gentagelse fra en nyligt udført request.Sådan opretter du en idempotency-nøgle
Nøglen er en streng, der entydigt identificerer en enkelt logisk handling. Den skal opfylde disse krav:| Krav | Værdi |
|---|---|
| Længde | 16-128 tegn |
| Tilladte tegn | Bogstaver, tal, ., _, - |
| Versalfølsomhed | Versalfølsom (ABC og abc er forskellige nøgler) |
| Omfang | Unik pr. handling, pr. klient |
Idempotency-Key-headeren. Hvis requesten fejler, og du gentager den, genberegner du nøglen ud fra den samme ordre og payload, og API’et genkender den som den samme handling.
Sådan håndteres gentagne requests
| Situation | Resultat |
|---|---|
| Ny nøgle | Requesten behandles normalt, og responsen gemmes. |
| Samme nøgle, samme payload, original færdig | Den gemte respons (statuskode og body) returneres, uden at handlingen udføres igen. Responsen indeholder headeren Idempotency-Replayed: true. |
| Samme nøgle, anden payload | 422 Unprocessable Entity. Nøglen er allerede knyttet til en anden request. |
| Samme nøgle, original stadig i gang | 409 Conflict med en Retry-After-header, der angiver, hvor mange sekunder du skal vente, før du prøver igen. |
En request, der fejler validering, gemmes ikke sammen med nøglen. Du kan rette payloaden og prøve igen med den samme nøgle.
Konflikter og fejl
Hvis du modtager en409 Conflict, er den oprindelige request stadig under behandling. Vent det antal sekunder, der er angivet i Retry-After-responseheaderen, og prøv derefter igen med den samme nøgle:
Example response
422 Unprocessable Entity betyder, at nøglen allerede er blevet brugt til en request med en anden payload. Genbrug enten den oprindelige payload, eller generér en ny nøgle til den nye handling.