333 messaggi dal 13 novembre 2009
Letto l’articolo pubblicato veramente interessante visto soprattutto la facilità e l’indipendenza data al client per paginazione filtri e ordinamento. 2 3 domande, come limitare i campi da filtrare o piuttosto predefinire un numero massimo di record per pagina. Immaginiamo un json molto grande da impegnare il server. Se ad esempio un metodo ritorna un elenco di immagini base64 vorrei poter decidere di limitare la richiesta a 30 immagini a pagina evitando che decida l’utente per questioni di performance. E che strumento utilizzare per la documentazione, swagger?
Modificato da flaviovb il 07 febbraio 2020 18:17 -
11.883 messaggi dal 09 febbraio 2002
Contributi
Ciao Flavio,


come limitare i campi da filtrare

Puoi usare dei DTO, sia per le query che per le mutation. Nell'articolo ho tenuto tutto molto semplice (o semplicistico) e ho sempre usato le entità di Entity Framework Core.

Ma nell'applicazione demo, in questa mutation, ho usato un DTO come argomento per la creazione, in modo da poter esporre solo determinati campi. Poi dal DTO leggo le informazioni fornite dal client e le uso per creare un'entità vera e propria che poi viene persistita con Entity Framework Core.
https://github.com/aspitalia/aspnetcore-graphql-hotchocolate/blob/master/Models/Mutations/CatalogMutations.cs#L14


un numero massimo di record per pagina

Puoi aggiungere questo allo schemaBuilder, dal metodo ConfigureServices della classe Startup.
var schemaBuilder = SchemaBuilder.New()
                                 .AddType(new PaginationAmountType(2))
                                 //Qui aggiungo query e mutation
                                 ;



Se ad esempio un metodo ritorna un elenco di immagini base64

Lo puoi fare ma valuta se restituire dei percorsi alle immagini, anziché il contenuto binario. Infatti, quando codifichi un contenuto binario in base64, la quantità di dati da trasferire si gonfia di un 33%.


E che strumento utilizzare per la documentazione, swagger?

No, Swagger non è adatto per API GraphQL. C'è il Playground fornito da HotChocolate.
https://www.aspitalia.com/articoli/asp.net-core3/creare-api-graphql-aspnetcore-hotchocolate-p-3.aspx#title_4
Da lì puoi vedere lo schema ed eventualmente scaricarlo in formato JSON o SDL per poi passarlo a strumenti di visualizzazione dei terze parti, se vuoi.


Ciao ciao,
Moreno

Enjoy learning and just keep making
333 messaggi dal 13 novembre 2009
Grazie non ti smentisci mai. Un grande!
F.
333 messaggi dal 13 novembre 2009
Avrei una ulteriore considerazione. OData vs GraphQL. Avevo cominciato a studiare OData e l'ho trovato abbastanza semplice, intuitivo, in particolare molto potente circa i decoratori sulle action ecc tali da implementare un ampio e specifico livello di personalizazione circa la paginazione, i limiti di quest'ultima e filtri ecc. Con nuget e poche righe di codice in aspnet core 3.1 si crea un servizio OData. Perché usare l'una o altra? In una applicazione aziendale che eventualmente vuole esporre il servizio e farlo consumare a terzi in particolare in javascript, hybridapp ecc..mi pare dche OData sia la scelta migliore.
F

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.