Come definire e condividere uno schema JSON tra front-end e back-end di un'applicazione?

4

Abbiamo un'app mobile che accetta input in alcuni campi, li formalizza come documento JSON e poi li invia al back-end per l'elaborazione.

Vogliamo concordare uno schema per questo documento che possa essere convalidato e referenziato indirettamente sia nel back-end che nel front-end.

Una delle motivazioni è che l'input può cambiare a seconda della lingua, quindi in una lingua diversa, anche se il la struttura sarà la stessa, le voci JSON avranno valori diversi e quindi non possiamo avere quelle codificate su entrambe le estremità (ma soprattutto sul back-end).

Sono principalmente interessato a come un tale schema può essere rappresentato e come può essere convalidato nel back-end. Devo definire un'interfaccia per questo? Se è così, c'è già qualcosa di standardizzato che lo compie in modo indolore?

Il linguaggio di back-end di destinazione è Python su Django, siamo felici di andare con qualsiasi pacchetto finché fa il lavoro.

    
posta Nobilis 12.01.2017 - 14:56
fonte

2 risposte

3

Utilizziamo schema json per convalidare gli oggetti che inviamo.

Nel caso in cui si abbiano dipendenze funzionali in uno schema, in Python, la libreria consente di utilizzare le funzioni per convalidare le voci secondarie. Esempio: con jsonschema puoi verificare che entrambi gli attributi siano numeri. Con Python puoi anche convalidare che un numero è maggiore dell'altro.

Nota sull'architettura: gli schemi possono fare riferimento l'un l'altro. Le abbiamo inserite in una cartella inclusa la documentazione su come aggiungere, rimuovere e standardizzare attributi. Ogni commit crea un nuovo pacchetto Python ma potrebbe anche generare un JavaScript, Java, .. . pacchetto.

Ciò che mi piace di questo approccio:

  • Gli schemi hanno un posto separato perché il loro compito è facilitare la comunicazione. Quindi, non appartengono al frontend / backend / qualsiasi code base.
  • Il repository è il luogo della comunicazione su ciò che le diverse applicazioni richiedono. La documentazione, i problemi e le richieste di pull relative al processo di comunicazione si trovano in un unico posto, non divisi su tutte le diverse fonti che comunicano tra loro.
risposta data 12.08.2017 - 09:33
fonte
0

Potresti dare un'occhiata a YAML , RAML e / o OpenAPI . O se vuoi ancora più materiale di lettura dai un'occhiata alla corrispondente lista panoramica su wikipedia .

(E sì, so che JSON non è lo stesso di REST, sto solo supponendo che tipo di interfaccia debba essere descritta basandosi sull'impressione che JSON sia più comunemente favorito da chi progetta interfacce Rest )

    
risposta data 12.01.2017 - 16:14
fonte

Leggi altre domande sui tag