2017-12-29 35 views
0

So habe ich eine Frage in Bezug auf REST-API-Design:REST API - kann ich mehrere APIs innerhalb einer anderen API aufrufen? Was passiert, wenn einer der internen API-Aufrufe fehlschlägt?

Ich habe mehrere REST-APIs, die ein bestimmtes Verhalten, z. den Fahrzeugstatus aktualisieren (z. B. verfügbar, On-Hire, Wartung, Ruhestand), der eine Überprüfung durchführt, um zu überprüfen, ob das Fahrzeug derzeit Mietbuchungen hat, bevor der Status geändert wird, um es zu stornieren usw. Eine weitere Möglichkeit besteht darin, alle Schadensfälle am Fahrzeug zu protokollieren Sobald ein Fahrzeug aus der Vermietung zurückgegeben wurde, werden lediglich allgemeine Kommentare zum Fahrzeugzustand aufgezeichnet. Und eine andere, die ein Fahrzeug aus der Verwendung ausschaltet (z. B. Ende des Lebens), verdoppelt die Logik und die Aktionen der anderen zwei APIs als Teil dieser RETIRE-API.

Ich möchte jedoch die Duplizierung von Code/Logik verhindern, indem ich nur die RETIRE API ändere, um die einzelnen APIs als Teil des Aufrufs dieser API aufzurufen, dies wird helfen, wenn ich die Logik der anderen APIs ändern muss hindere mich daran, diese Logik in der RETIRE api zu duplizieren.

So gibt es innerhalb des aktuellen API-Designs eine Fehlerbehandlung, z. Wenn eine bestimmte Aktion einen Fehler verursacht, setzt die API die Transaktion zurück und zeigt dem Benutzer einen Fehler an, warum dies fehlgeschlagen ist, andernfalls werden die geänderten Daten festgeschrieben. Das funktioniert großartig.

Allerdings, wenn ich jedes API innerhalb dieser RETIRE API aufrufen, wie kann ich mit den Fehlern umgehen, z. Wenn die RETIRE API zuerst die 'DAMAGE API' aufruft, um jeglichen Schaden aufzuzeichnen, und dies erfolgreich ist, werden die Daten festgeschrieben, aber dann schlägt die 'VEHICLE STATUS' API fehl, es würde eine Antwort an den Benutzer mit dem relevanten Fehler senden, aber hier Das Problem ist, die Schadens-API wurde bereits ausgeführt und ist erfolgreich, daher sind diese Daten bereits gespeichert ... Wenn der Benutzer es erneut versucht und dieses Mal alles erfolgreich ist, werde ich doppelte Daten im Bereich 'Schaden' haben.

Also wie kann ich nur die Daten für alle APIs festschreiben, sobald sie alle mit einem Erfolg zurückgegeben haben? Oder ist es besser, die 3 APIs zu haben, die immer noch unabhängig voneinander sind, aber vielleicht Funktionen erstellen und diese Funktionen innerhalb jeder API aufrufen? Wenn ich also die Logik einer bestimmten Aktion ändere, werden sie alle folgen?

Sorry für die Geschichte, aber ich wollte nur helfen, mein Problem zu euch allen zu bekommen.

Vielen Dank im Voraus

Antwort

1

Ihre Beschreibung zeigt an, dass Sie die RETIRE API einige der Logik in der Schaden-API, aber nicht alle davon ... also ausklammern das Zeug Sie wiederverwenden möchten verwenden möchten in eine interne Methode, die von beiden APIs aufgerufen werden kann.

+0

Es ist alles die gleiche Logik. Also ich denke, wie Sie sagen, verschieben Sie es in eine Methode, und dann kann ich dies aus beiden apis – Michael

+0

Alle der gleichen Logik, außer für Transaktionsverarbeitung und Fehlerberichterstattung ..., also * einige * der Logik. –

+0

Ah, ich verstehe. Danke dafür – Michael

Verwandte Themen