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.