Convalida JSON sul lato server

1

Sto lavorando su Web Application (ASP.Net MVC) che consentirà agli utenti di modificare un oggetto JSON nel browser e salvarlo nel database.

Per fare ciò, l'oggetto JSON verrà inviato dalla vista al lato server (controller) e verrà convertito in entità (oggetti C #). In quel momento, posso eseguire la convalida sul lato server. Successivamente, le entità vengono riconvertite in JSON e salvate nel database.

Comprendo la necessità della convalida lato server, ma non sono soddisfatto della conversione di entità JSON in C # e ritorno a JSON.

Questo è un modo corretto per eseguire la validazione lato server? In caso contrario, come posso validare e salvare correttamente l'oggetto JSON dal client al server?

    
posta Mhd 11.04.2018 - 03:01
fonte

3 risposte

2

JSON object will be sent from view to server-side (controller) and will be converted to entities (C# objects). At that moment, I can perform server-side validation. After that, entities are converted back to JSON [...]

I understand the necessity of server-side validation, but I'm not happy with converting JSON to C# entities and back to JSON.

In effetti, deserializzare le stringhe JSON sugli oggetti solo per convalidare il contenuto può essere eccessivo. Nel complesso, se finiremo per serializzarli nuovamente su JSON (beh, non è necessario serializzarli di nuovo poiché abbiamo già il JSON originale).

Is this a proper way to do server-side validation?

Citando @Christopher

Sì, questo è un modo corretto per fare la validazione - niente è intrinsecamente sbagliato nell'operazione ... Ma ecco alcune altre opzioni se vuoi migliorare le prestazioni e mantenere comunque la funzionalità corrente

Schemi JSON

Gli schemi JSON consentono di convalidare il formato JSON (modello) e diversi vincoli come non valori nulli, campi obbligatori, modelli corrispondenti, ecc. Se la tua libreria è personalizzabile, probabilmente ti sarà consentito estendere il processo di convalida in modo che tu, può aggiungere nuovi vincoli (piuttosto legati al business). Se hai familiarità con XML, JSON Schemas e XSD sono omologhi.

JSONPath

Oltre agli schemi JSON abbiamo JsonPath 1 per interrogare le stringhe JSON senza dover associare JSON a dati specifici Modelli. Beh, almeno non a uno di cui dobbiamo preoccuparci. Se hai bisogno di un approccio programmatico (a differenza del dichiarativo, come usano gli schemi JSON), JsonPath dovrebbe fare il lavoro.

In ogni caso, entrambi non si escludono a vicenda.

1: Questa è praticamente la stessa idea di XPath

    
risposta data 11.04.2018 - 08:44
fonte
0

Puoi utilizzare lo schema JSON per imporre il controllo e la convalida del tipo sugli oggetti JSON. È possibile riscrivere il server nel nodo e utilizzare uno dei numerosi pacchetti NPM disponibili per la convalida di oggetti JSON su un documento dello schema JSON.

Se la riscrittura del server nel nodo non è un'opzione, puoi utilizzare la libreria dello schema JSON di Newtonsoft .

    
risposta data 11.04.2018 - 03:17
fonte
0

JSON è un formato utilizzato per trasferire informazioni da un luogo a un altro.

Il tuo codice C # accetta JSON dal server, lo converte in oggetti C # e eventualmente modifica gli oggetti C # e li invia al server. Naturalmente li manda come JSON.

Il tuo codice server memorizza l'oggetto come preferisce (ad esempio in un database SQL) e quando richiesto converte i suoi dati in JSON e lo invia a un client, o riceve JSON dal client, quindi lo controlla e lo memorizza in qualsiasi modo gli piaccia

Non lavori MAI direttamente sui dati JSON. Il codice viene convertito tra JSON e gli oggetti del modello del codice. Altro codice (come sul server) fa esattamente la stessa cosa. I dettagli non sono affar tuo, tranne che il server fornisce e accetta JSON come formato di scambio comune.

    
risposta data 11.04.2018 - 14:37
fonte

Leggi altre domande sui tag