Come ospitare un servizio Web con dipendenze su molte API / SDK che espongono i metodi in diverse lingue

0

Attualmente un progetto a cui sto lavorando dipende da diversi SDK e API che eseguono attività identiche, ma per diversi prodotti esterni. Ad esempio, in un mondo di Internet of Things abbiamo un'interfaccia comune di TurnOn , TurnOff , GetStatus , ecc. Avere tutte queste dipendenze nella carne e nelle patate del mio progetto sta diventando disordinato, e voglio estrailo in un servizio web separato che espone queste funzioni comuni su un'API REST.

La mia domanda è questa: qual è l'architettura consigliata per il fatto che un servizio Web esponga un'API REST che, quando viene chiamata, risolve l'IP richiesto nell'SDK corretto e passa attraverso il ciclo di richiesta / risposta standard? Soprattutto in un modo che ridimensiona e gestisce gli SDK che espongono i metodi in diversi linguaggi di programmazione.

Per il contesto, ecco una richiesta di esempio che l'API potrebbe esporre ... /things/{ip address}/turn_on , che quindi risolverebbe che l'indirizzo IP appartiene a un aspirapolvere Hoover e fare una chiamata all'SDK dell'aspirapolvere Hoover, che potrebbe esporre i metodi scritto in C #. In alternativa, potrebbe risolvere il fatto che l'indirizzo IP appartiene a una diversa marca di vuoto che espone i suoi metodi in C ++.

    
posta Jim 05.10.2014 - 14:18
fonte

1 risposta

1

Progetta e crea prima un'API REST. Stai attento: non è così facile come sembra. Stateless, memorizzabile nella cache, identificatori di risorse non indirizzi. Non è così facile.

Quindi implementa semplicemente astrattamente le implementazioni concrete che hai già fatto. Dovrai fare scelte tecnologiche, ma non ci hai detto nulla dei tuoi punti di contatto. Ad esempio, che tipo di server sceglieresti?

Per quanto riguarda il tuo esempio, ha problemi.

  • L'endpoint REST dovrebbe essere probabilmente / things / vacuum / {id}
  • avresti bisogno di inviarlo una richiesta POST (GET non può cambiare stato)
  • I dati POST probabilmente contengono il campo "power = on".
risposta data 06.10.2014 - 05:23
fonte

Leggi altre domande sui tag