Visualizzazione post con etichetta api. Mostra tutti i post
Visualizzazione post con etichetta api. Mostra tutti i post

mercoledì 22 agosto 2018

Angular e SWAPI



Mi sono iscritto ad un corso di  Angular e React tenuto da Antony Mistretta.

Nella prima lezione ci ha suggerito un ottimo sito di API online da utilizzare come sorgenti per delle applicazioni di prova  https://swapi.co con un semplice set di oggetti e di chiamate REST basate su architettura Django. ( Indagando sul web ho trovato anche le https://pokeapi.co/ ma sono veramente troppo complesse... e poi bisogna conoscere il mondo dei pokemon.... )



Per realizzare una piccola demo con Angular per sfruttare le informazioni presenti nel sito ho utilizzato alcuni componenti a me famigliari:

- PrimeNG : personalmente le trovo più complete delle Material
- Compodoc: generatore di documentazione like javadoc molto completo


Alcune funzionalità degne di nota:

- Cache : cache delle chiamate nella sessione del browser, quando devo accedere a elementi uguali ricorrenti salvo l'informazione come chiave valore, dove la chiave è il mio url di chiamata e invece il valore è l'object caricato.

- Estensione dei modelli e dei controller principali con classi di base per ridurre codice in esubero.




TODO
- e2e test
- karma test
- Caricamento di un templateUrl dinamico così da utilizzare un solo Componente per gestire tutte le pagine.
- Ricerca sulle tabelle usando i parametri di search

lunedì 27 aprile 2015

Spring 4 MVC send response image

che fatica.

l'unica soluzione trovata per servire una immagine con spring 4 mvc senza impazzire...


lunedì 17 novembre 2014

Client Retrofit - Problemi con java.util.Date

Nell'ultimo periodo sto utilizzando Retrofit per creare client di accesso a api rest.

Un problema comune è quando si vuole passare nella richiesta in @Body in post un parametro con un modello di classe che contenga un campo java.util.Date. Il problema nasce dalla conversione in Json per il client che si aspetta tutti dati in json in ingresso e a sua volta restituisce un json.

Ho risolto il problema configurando il serializzatore e deserializzatore per il client okclient:


 private static RestAdapter buildClientRestAdapter(String uri) {

final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(ClientDispatcher.timeout, TimeUnit.MILLISECONDS);
okHttpClient.setConnectTimeout(ClientDispatcher.timeout, TimeUnit.MILLISECONDS);
final OkClient httpClient = new OkClient(okHttpClient);

final GsonBuilder builder = new GsonBuilder();
builder.setDateFormat(DateFormat.MILLISECOND_FIELD);

builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
   @Override
   public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return new Date(json.getAsJsonPrimitive().getAsLong());
   }

});


builder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
   @Override
   public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext  context) {
     return src == null ? null : new JsonPrimitive(src.getTime());
   }
 });

final Gson gson = builder.create();

return new RestAdapter.Builder().setEndpoint(uri).setLogLevel(RestAdapter.LogLevel.FULL).setConverter(new GsonConverter(gson)).setClient(httpClient).build();
    }