Mi piacerebbe creare un servizio REST di Apigility che accetta POST di, ad esempio, un oggetto utente che ha un campo contenente una matrice di oggetti indirizzo. Posso definire il campo senza validatori ed elaborare il JSON raw nel mio codice, ma mi chiedo se c'è un modo migliore per farlo dove gli oggetti nidificati possono essere validati anche da Apigility?Campo di apigilità che accetta una matrice di oggetti incorporati?
risposta
Apigility ha un modulo chiamato convalida del contenuto: consente di configurare i filtri di input per i servizi e richiede che i dati vengano passati attraverso il filtro di input per la convalida e una risposta appropriata di ApiProblem viene restituita quando la convalida non riesce. (vedi https://apigility.org/documentation/api-primer/content-validation)
Questo lascia ancora a te la responsabilità di configurare un filtro di input che soddisfi le tue esigenze.
Vorrei controllare packagist.org per una libreria di convalida dello schema JSON che può assumere uno schema JSON e un carico utile JSON e verificare che il carico utile sia ben formato in base allo schema. Quindi puoi facilmente implementare una custom InputFilter
e collegarla ai tuoi servizi. Questo ti darà la convalida che l'oggetto principale e gli oggetti secondari sono ben formati (es .: l'utente ha nome, email, data di nascita e campo indirizzo contiene oggetti che hanno tutti indirizzo/via/zip/ecc.).