Italian community of Lazarus and Free Pascal

Programmazione => Lazarus e il web => Topic aperto da: xinyiman - Ottobre 05, 2023, 09:43:56 am

Titolo: Microservizio json
Inserito da: xinyiman - Ottobre 05, 2023, 09:43:56 am
Buongiorno a tutti, come esercizio di stile ho creato un piccolo progetto d'esempio, con lo scopo di dimostrare come si costruisce un microservizio web che restituisce dati in json.

Praticamente affronta due tematiche

1. realizzare un login basato su jwt (il codice l'ho preso da un altro progetto di Anderson J. Gado da Silva and Hélio S. Ribeiro)

2. leggere il contenuto di un file excel e renderlo disponibile in json (previa autorizzazione tramite jwt)

Il progetto lo potete trovare qui: https://github.com/XinYiMan/xls2json

Una volta che avete compilato il progetto lanciatelo (il file config.ini deve risiedere nella stessa cartella dell'eseguibile).

Gli utenti autorizzati e relative password li trovate nel config.ini

Una volta lanciato l'eseguibile aprite un browser e lanciate i seguenti due comandi

http://localhost:8080/login?username=test1&password=qwerty

Vi restituirà un json, se positivo il valore di code sarà 0 e la description sarà vuota, altrimenti avranno altri valori e vorrà dire che il login non sarà valido.

Recuperate la stringa che compone il valore di jwt che per semplicità da qui in avanti chiameremo JWT_RESULT

e lanciate il comando

http://localhost:8080/index?action=azione1&jwt=JWT_RESULT

vi restituirà un errore in quanto il file azione1.xls non esiste-

azione1 è il nome del file xls che deve essere trasformato in JWT.

Quindi create un file excel con nome azione1.xls riempitelo di valori nelle colonne (come se fosse una tabella) e la prima riga deve contenere il nome della colonna  della tabella.

Ora salvate questo file nella sottocartella /cartella_dell_eseguibile/files/test1dir/azione1.xls

Adesso se rilanciate il comando

http://localhost:8080/index?action=azione1&jwt=JWT_RESULT

dovreste vedere il contenuto del file xls sottoforma di json.

Attenzione: se nel file config.ini

Users=2

non potete creare la terza accoppiata di credenziali nella sezione [Users]

Gli utenti iniziano da indice 0 e vanno a indice Users-1

ID rappresenta ovviamente l'identificativo dell'utente
USERNAME , PASSWORD e ACTIVE servono per l'autentificazione
DIR indica la sottodirectory di files dove trovare i file accessibili dall'utente (se vuota pesca direttamente da files)

Sperando che questo esempio possa essere d'aiuto a qualcuno.
Titolo: Re:Microservizio json
Inserito da: DragoRosso - Ottobre 05, 2023, 09:54:52 am
Come nota tecnica, vorrei aggiungere che è necessario installare "FPSPREADSHEET" dal Online Package Manager e altre dipendenze che vengono risolte dando l'OK alle domande poste dall'OPM.

Ciao
Titolo: Re:Microservizio json
Inserito da: xinyiman - Ottobre 05, 2023, 10:31:25 am
Giustissimo DragoRosso, grazie della precisazione.
Titolo: Re:Microservizio json
Inserito da: nomorelogic - Ottobre 05, 2023, 03:32:52 pm
grazie xinyiman
progetto molto interessante
Titolo: Re:Microservizio json
Inserito da: Stilgar - Ottobre 05, 2023, 03:54:31 pm
 ::)
https://github.com/paxtibi/jsonserver


Allora aspetto una recensione anche per questo progettino  ;D
Titolo: Re:Microservizio json
Inserito da: nomorelogic - Ottobre 05, 2023, 04:38:22 pm
eh... dovreste metterli insieme e farne uno unico :)

ci sono cose interessanti in tutte e 2 i server
Titolo: Re:Microservizio json
Inserito da: xinyiman - Ottobre 06, 2023, 08:53:29 am
Ovviamente questo è solo un esempio. Però lo stesso approccio l'ho usato per creare nel giro di poche ore un servizio simile che prende in ingresso (sempre previa autorizzazione) delle stringhe da far stampare su delle stampanti zebra in giro per l'azienda. Poi un programma con lazreport manda in stampa sulla stampante corretta.
Titolo: Re:Microservizio json
Inserito da: Stilgar - Ottobre 06, 2023, 09:04:35 am
xiny è più di un anno che aspetto un feedback da nomore  ;D ;D ;D ;D
Una cosa tra di noi insomma.




Stilgar
Titolo: Re:Microservizio json
Inserito da: xinyiman - Ottobre 06, 2023, 09:14:18 am
xiny è più di un anno che aspetto un feedback da nomore  ;D ;D ;D ;D
Una cosa tra di noi insomma.




Stilgar

Si si lo so  ;D ;D
Titolo: Re:Microservizio json
Inserito da: nomorelogic - Ottobre 06, 2023, 06:22:35 pm
colpa del COVID!  8)
Titolo: Re:Microservizio json
Inserito da: Stilgar - Ottobre 06, 2023, 07:00:29 pm
COme Volevasi Inventare Digitale?
Che progetto è?
Titolo: Re:Microservizio json
Inserito da: DragoRosso - Ottobre 06, 2023, 07:25:11 pm
E' il nuovo progetto di vita di @nomorelogic, è rimasto fulminato dalla LUCE.

Però è l'acronimo di: COme Vivere Imparando Delphi ...  ;D ;D ;D
Titolo: Re:Microservizio json
Inserito da: nomorelogic - Ottobre 06, 2023, 10:50:25 pm
o...
COme Vinere Ignorando Delphi

già suona meglio :D
Titolo: Re:Microservizio json
Inserito da: Stilgar - Ottobre 06, 2023, 10:52:37 pm
Quando ho letto che sei rimasto fulminato dalla LUCE ho subito pensato che l'impianto di casa non fosse a norma ... :-X