Quando non ci sono API

0

Quando è necessario integrarsi con un'applicazione Web e un'API non è disponibile, è una soluzione valida per simulare un browser Web che interagisce con l'applicazione Web come un vero utente potrebbe interagire con esso?

UPDATE

Alcuni contesti.

L'app Web appartiene a un fornitore / partner. La loro tempistica per la creazione di un'API corretta non soddisferà le nostre esigenze.

Scraping for data è la parte meno utilizzata. È necessario il CRUD completo per l'interazione con l'app.

Come sviluppatore, posso vedere che funzionerà, ma voglio essere in grado di rispondere alle preoccupazioni che altri potrebbero sollevare riguardo a questo approccio.

Potresti basare un'applicazione aziendale mission-critical su questo approccio? Perché o perché no?

    
posta m0p1 13.07.2013 - 21:40
fonte

3 risposte

1

Se il problema riguarda un fornitore / partner di terze parti con cui la tua azienda ha una solida relazione, la persona migliore da chiedere è il venditore. Mettiti in contatto con qualcuno della loro azienda, preferibilmente qualcuno associato al team che costruisce l'API, e chiedi la loro opinione; probabilmente conosceranno abbastanza bene i dettagli della loro applicazione e saranno in grado di offrire un buon consiglio.

Quanto sia fattibile interagire con la webapp fingendo di essere un browser dipende molto dalla natura della webapp. Se si tratta di un'applicazione javascript-pesante, AJAXy, stateful, potresti dover fare MOLTI test e sviluppo extra per far funzionare le cose, perché senza un'API appropriata, non hai la certezza che non stiano facendo qualcosa di veramente pazzo e malvagio come cambiare la logica di stato quando vedono il tuo browser richiedere il CSS di una particolare pagina perché segnala una particolare linea di javascript caricati ed eseguiti, ed era l'unico modo in cui il loro programmatore junior sapeva come fare qualcosa.

D'altra parte, se è una webapp abbastanza stabile, ben progettata, preferibilmente RESTful, dovresti essere in grado di inviare richieste HTTP di vario tipo, analizzare le risposte e farlo funzionare.

C'è anche sempre il vecchio programmatore in attesa di aggiungere un altro livello di astrazione. A seconda della natura della relazione della tua azienda con il venditore, potresti essere in grado di ottenere l'interfaccia effettiva dell'API prima che sia completata, o anche solo avere un'idea generale di come funzionerà. A quel punto, puoi scrivere la tua "API" internamente per emularle usando le funzionalità esistenti della webapp. Una volta arrivata la vera API, dovresti essere in grado di convertire rapidamente la tua implementazione in nient'altro che un sottile involucro attorno all'API corretta. Quindi, si spera, si possa ridefinire il layer wrapper, senza mai interrompere la funzionalità. Non è una soluzione molto carina o purista, ma se il venditore è disposto e in grado di lavorare a stretto contatto con te, o anche solo disposto a lanciare alcune pagine della documentazione API, questo potrebbe essere un modo abbastanza pratico per ottenere la funzionalità lavorando ora, pur essendo in grado di eseguire in modo rapido e indolore (per quanto possibile) passare all'API corretta quando diventa disponibile.

In nessuno di questi casi, se la webapp è ospitata su server di proprietà del venditore, veramente non è necessario cancellarlo prima con loro, soprattutto se l'app sta per essere pubblicata per i dati con qualsiasi regolarità. Se la webapp è invece parte di qualcosa ospitato internamente nella tua azienda, allora dovresti controllare in modo simile con gli amministratori di rete / sistema, dare loro un'idea di quanto sarà pesante il traffico e assicurarti che stiano bene con esso. La mancata segnalazione di persone prima di sbattere il server con il traffico è non interessante e potrebbe comportare l'impossibilità di accedere a IP da parte degli utenti IP, rendere la loro azienda più ostile alla tua o persino farti licenziare quando entrambi le cose accadono e la direzione inizia a cercare qualcuno da incolpare, in modo che possano tornare nelle grazie del venditore.

    
risposta data 14.07.2013 - 19:04
fonte
8

Quando non ci sono API, chiedi al proprietario del sito web un suggerimento.

Ad esempio, diciamo che sei interessato a un elenco di film pubblicati da un sito web che raccolse un ampio database di quasi tutti i film pubblicati per decenni. Non c'è API.

Se chiedi al proprietario:

  • Forse può venderti i dati grezzi,
  • Forse è un'API, ma non pubblica. Non è un caso raro: creare una API per uso interno è una cosa; scrivere una documentazione completa, esempi, ecc. al fine di renderlo pubblico è una storia diversa. In tal caso, può essere possibile dare accesso a un'API interna a un partner fidato.
  • Forse il sito web non ha alcun database, ma semplicemente recupera i dati da un servizio web di terzi. Il proprietario può indicarti questo servizio per poterlo utilizzare direttamente.
  • Forse il proprietario è disposto a dedicare del tempo a creare un'API.
  • Forse il proprietario è pronto ad assumerti per creare l'API.
  • Forse c'è un modo per chiamare una versione semplificata del sito web, che ti darà l'opportunità di lavorare su un markup di facile comprensione e al proprietario per vedere la larghezza di banda non utilizzata eccessivamente.
  • ecc.

Ci sono molte opportunità in questo caso.

Se inizi a scartare il sito web senza chiedere a nessuno, prima o poi, il proprietario lo vedrà. Spetterà a lui:

  • Modifica il markup delle pagine web per costringerti a riscrivere l'intera app. Quindi cambia di nuovo. E ancora.
  • O ti blocco.
  • Oppure presenta un reclamo per violazione del copyright.

In tutti questi tre casi, le conseguenze potrebbero variare da leggermente fastidiose alla conseguente perdita di denaro. Non andare in questo modo.

    
risposta data 13.07.2013 - 23:20
fonte
2

Would you base a mission critical business application on this approach? Why or why not?

No.

L'approccio è fragile; è troppo facile da rompere, troppo difficile da mantenere e impossibile da testare. Non mi fare affidamento su di esso in nessun tipo di contesto di missione critica.

Per far sì che funzioni, il tuo partner dovrebbe essere disposto a bloccare l'interfaccia utente in modo che non cambi e interrompa la tua interfaccia. Altrimenti, ti stai registrando per un incubo di manutenzione continuo e senza fine.

    
risposta data 14.07.2013 - 19:03
fonte

Leggi altre domande sui tag