Abbiamo ServiceA con questi endpoint definiti:
/devices:
get:
queryParameters:
make:
type: string
repeat: false
required: false
model:
type: string
repeat: false
required: false
responses:
200:
body:
schema: Devices
500:
body:
text/plain:
/{deviceId}:
uriParameters:
deviceId:
get:
responses:
200:
body:
schema: Device
404:
body:
text/plain:
500:
body:
text/plain:
Se nessun dispositivo corrisponde a una richiesta di / dispositivi? make = x & model = y, viene restituito un elenco vuoto di dispositivi con uno stato 200. Se nessun dispositivo corrisponde a una richiesta di / devices / badDeviceID, viene restituito un 404.
Abbiamo un altro servizio che chiama questo. Il problema che stiamo riscontrando è che vogliamo restituire un errore di 500 servizi dal secondo servizio se il primo servizio è inattivo. Se un 404 viene restituito dal server per le chiamate a / devices? Make = x & model = y, sappiamo che il servizio è in realtà inattivo / irraggiungibile. Ma per le chiamate a / devices / badDeviceID, non possiamo sapere se il dispositivo non esiste o il servizio è inattivo.
Qualcun altro ha avuto questa situazione? Come l'hai gestito?
I nostri servizi sono scritti in Java e distribuiti in un contenitore di applicazioni, nel nostro caso JBoss EAP. Se EAP è attivo e in esecuzione ma il servizio individuale non è distribuito o attualmente disabilitato, EAP restituirà un 404 al chiamante. In questo caso non possiamo distinguere da quando il servizio è distribuito / disponibile e la risorsa non può essere trovata.