Best Practices WebApi

di il
3 risposte

Best Practices WebApi

Gentili,
mi scuso come sempre in anticipo se non sarò del tutto chiaro, posto qui e non su .Net perché penso che riguardi un po' la procedura in generale sulle Api piuttosto che la singola tecnologia, anche come procedimento futuro.
In breve: sto implementando una WebApi Asp.Net che deve interfacciarsi con un gestionale su Db Access usato anche in locale da vari operatori tramite le maschere di Access stesso.
Tra le varie api da implementare c'è anche quella per l'inserimento dell'ordine; il collega che farà l'app su Android e Ios pensa che la procedura più corretta sarebbe mandare il tutto in due passaggi:
1) info generali sull'ordine (la testata) a cui l'api risponderà con un IdOrdine;
2) le righe degli articoli ordinati con agganciato chiaramente l'IdOrdine.
In pratica ci sono tre tabelle coinvolte: la tabella contatori, la tabella testata ordine e la tabella righe ordine.
Personalmente invece considero preferibile, dato il fatto che non si tratta di lavorare in locale, che mi venisse spedita con un'unica richiesta tutti i dati di testata e le relative righe a cui io risponderò con idordine e idrighe.
Anche se non ho molte esperienze con le Api a livello logico se viene fatta un'unica richiesta:
1) posso gestire le transazioni e modificare tutte le tabelle in unico passaggio: o va bene tutto e si scrive o non va bene qualcosa e non si inserisce nulla; se invece devo prima inserire la testata ed aggiornare la tabella contatori, può anche succedere che per qualche motivo la testata resti là bella solitaria, spaiata e non collegata alle righe ordine.
2) ci sono meno passaggi avanti e indietro nel cui frattempo può crashare Access, il server Asp, la rete, o anche l'App, etc.
Di solito qual è la soluzione migliore secondo voi?
Buona giornata. Lucius

3 Risposte

  • Re: Best Practices WebApi

    luciusinfabula ha scritto:


    Di solito qual è la soluzione migliore secondo voi?
    Diciamo che, in linea generale, le differenze di massima tra le due soluzioni le hai già preannunciate, ma non credo ve ne sia una migliore o peggiore in assoluto, poiché il tutto dipende da come viene vista la risorsa Ordine nella Web API che stai costruendo.

    Una visione potrebbe considerare ad esempio le righe di dettaglio dell'ordine come facenti parte integrante della risorsa Ordine, e pertanto andrebbero specificate e aggiornate in blocco quando si accede a tale risorsa, ma un'altra visione potrebbe considerare una risorsa DettaglioOrdine intendendola in modo separato.

    Oltre a valutare se una delle due alternative sopra introduce problematiche a livello di logica nel sistema, io ad esempio sarei per adottare la soluzione che prevede le righe come parte integrante dell'ordine, poiché questo semplifica a livello di transazione l'inserimento cumulativo dei dati nelle varie tabelle; va detto però che, attribuendo uno specifico "stato" a un ordine, questo potrebbe apparire inizialmente come provvisorio, essere successivamente integrato con le risorse correlat (ossia DettaglioOrdine) e venire confermato in un momento successivo.

    Intendo dire quindi che, per ogni visione, esiste un workaround o un modo lecito di rappresentarla, quindi alla fine credo che tutto stia a prendere accordi con lo sviluppatore e scegliere quella che appare migliore per entrambi tenuto conto di tutte le possibile casistiche d'uso che possono verificarsi, mentre tutto il resto in fondo è quasi "filosofia".

    Ciao!
  • Re: Best Practices WebApi

    L'ipotesi di doppio invio è da scartare anche solo per generali bizantini.
    C'è un terzo elemento tipicamente da aggiungere, l'anagrafica
  • Re: Best Practices WebApi

    Salve,
    scusate per il ritardo della risposta, non per volontà di essere maleducato, ma volevo prima testare il tutto.
    Ho proposto ed ottenuto alla fine l'invio di un'unica chiamata con testata e righe ordine, decoro il tutto con alcuni dati che mi prendo direttamente da altre tabelle e mando il tutto nelle rispettive tabelle, con un'unica transazione bella pulita.
    In questo caso non devo creare anagrafiche, l'Api mi serve solo per inserire ordini per clienti già esistenti, dall'anagrafica leggo alcuni dati che devono completare testata e righe.
    Grazie mille per i, come sempre , preziosi e precisissimi consigli.
    Lucius
Devi accedere o registrarti per scrivere nel forum
3 risposte