Wie kann ich eine API-ID beibehalten, während ich gleichzeitig mehrere Anfragen mit derselben ID erhalte?

Von vielen Artikeln und kommerziellen APIs, die ich gesehen habe, machen die meisten Leute ihre APIs idempotent, indem sie den Client auffordern, eine requestId oder einen idempotent-key (z. B.https: //www.masteringmodernpayments.com/blog/idempotent-stripe-request) und speichern Sie im Grunde die requestId <-> Response-Map im Speicher. Wenn also eine Anfrage eingeht, die sich bereits in dieser Map befindet, gibt die Anwendung nur die gespeicherte Antwort zurück.

Das ist alles gut für mich, aber mein Problem ist, wie ich mit dem Fall umgehen kann, dass der zweite Anruf eingeht, während der erste noch in Bearbeitung ist.

Also hier sind meine Fragen

Ich denke, das ideale Verhalten ist, dass der zweite Anruf wartet, bis der erste Anruf beendet ist und die Antwort des ersten Anrufs zurückgibt. Tun die Leute das so?

wenn ja, wie lange soll der zweite Anruf warten, bis der erste Anruf beendet ist?

wenn der zweite Anruf eine Wartezeit hat und der erste noch nicht beendet ist, was soll er dem Client mitteilen? Sollte es einfach keine Antworten zurückgeben, damit der Client eine Zeitüberschreitung und einen erneuten Versuch unternimmt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage