Passa il risultato nel concatenamento API

3

Abbiamo impostato (6-8) dell'API e sarà richiamato in una sequenza. ci sono casi, vuoi usare l'output della prima / seconda API nella terza / quarta API.

Abbiamo un oggetto request che viene passato come input a tutte le API. abbiamo definito tutti gli oggetti risposta nella stessa richiesta e dopo ogni esecuzione API verrà impostato l'oggetto risposta corrispondente. qual è il modo giusto per passare gli output dell'API alle altre API?

  public interface CeaseHandler<Request, Response> {

        public Response cease(final Request request);

    }

    First API

    public class CircuitCeaseHandler implements CeaseHandler<DeletionRequest, GenericApiResponse> {
      public GenericApiResponse cease(final DeletionRequest request) {
      }
    }

    Fifth API

    public class PhysicalPortCeaseApiHandler implements CeaseHandler<DeletionRequest, GenericApiResponse>{
     public GenericApiResponse cease(final DeletionRequest request) {
      }
    }

Qui DeletionRequest ha impostato attr, che è l'output della prima API e verrà utilizzato nella quinta api. idealmente la richiesta non dovrebbe contenere alcuna risposta api.

    
posta Selva 02.12.2016 - 06:24
fonte

1 risposta

1

Potresti imitare il pattern del middleware qui come, avere un oggetto di contesto che vive attraverso la sequenza di chiamate API e memorizzare tutti i risultati intermedi lì insieme a oggetti di richiesta e risposta.

Oppure, se sei soddisfatto dell'aggiornamento della risposta request oggetto potresti semplicemente trasferire i risultati intermedi all'interno dell'oggetto response request .

Questa tecnica è comunemente usata nei framework web Golang e NodeJS che usano lo stile middleware di creare applicazioni web (non per collegare le API ma per concatenare le funzionalità), ma è possibile copiare la tecnica e applicarla anche per concatenare le chiamate API.

AGGIORNAMENTO: Puoi anche usare map per mantenere i tuoi intermediari all'interno dell'oggetto risposta. Quindi non dovresti preoccuparti troppo di cambiare il codice per adattarlo alle tue nuove API.

Non sono un esperto di java ma dovresti avere un'implementazione di thread safe Map su JAVA (ConcurrentHashMap?) che puoi utilizzare per usare la modalità thread-safe.

Ecco un link che potresti utilizzare come riferimento

link

    
risposta data 02.12.2016 - 06:46
fonte

Leggi altre domande sui tag