SlideShare a Scribd company logo
1 of 40
Download to read offline
Come	usare Postman	di	accedere ai servizi di	una API	REST
per	sviluppare un'applicazione Web	con	Python	Django	
Postman & Python:
Uno	sviluppo armonioso
Cosa	posso	imparare?	
Come…
• Si	fa	la	ricerca	di	una	API	ben	adattato	all’applicazione
• Si	usa	l’interfaccia	di	POSTMAN	per	fare	le	richieste	dell’API
• Si	costruisce	una	richiesta	con	i	parametri
• Si	aggiunge	le	note	a	POSTMAN	e	condividerle	coi	colleghi
• Si	può	iniziare	lo	sviluppo	nel Python	Django	per	un	Web	App
Capitolo I:	Le	API
IL	NOSTRO	OBIETTIVO
Lo	sviluppo di	un	Prototipo:	
Un’applicazione Web,	AnalistApp,	
con	POSTMAN	e	Python	Django
Aspetta ....	Che cos'è un'API?
Cos’e’	un	API?	
“API è l'acronimo di Application	Programming	Interface.”
“Le	API	permettono di	espandere le	funzionalità di	un	programma.	
Per	uno sviluppatore mettere a	disposizione un	set	di	API	di	un	suo
software	significa dare	la	possibilità ad	altri di	interagire con	la	sua
piattaforma e,	soprattutto,	estendere le	funzioni e	le	caratteristiche
della struttura base	della piattaforma.	”
~	Simone	Carletti
La	Crescita Esplosiva dell’API: 2006	al	2016
Fonte:	https://www.programmableweb.com/news/programmableweb-api-directory-eclipses-17000-api-economy-continues-surge/research/2017/03/13
Qual è la	migliore API	per	l'applicazione?
• È facile	trovare le	informazioni che cerchi nella documentazione?
• È facile	imparare come	si costruisce la	sintassi nei parametri?
WorldBankeurostat
L'impatto della documentazione
dell’API sullo sviluppo
Per	le	richieste REST	in	JSON:
• È disponibile il tipo di	dati corretto?	Lingua? Moneta? Anno-Gamma?
• Esistono esempi di	stringhe /	chiamate di	query?
• Gli endpoint	sono ben	documentati?
• I	parametri sono chiaramente definiti?
• È facile	costruire una stringa di	query?
• Quanto complesso è l'oggetto dati da	analizzare nel programma?
• Devo	implementare la	cache	client-side	delle chiamate API?
• 100%	Uptime	/	disponibilità?
Capitolo II:	POSTMAN	per	gli sviluppatori
Sondaggio
POSTMAN	della
comunità
Hanno	trovato
gli strumenti
dell’API “come	
essenziale per	il
flusso di	
lavoro.”
1.L’interfaccia	semplice
2.	L’accesso all’API
Il	prototipo deve mostrare i dati del	PIL	in	Italia
GDP	=	PIL:	
Prodotto Interno Lordo:	Misura il valore di	mercato aggregato di	
tutte le	merci	finite	e	di	tutti i servizi prodotti nei confini di	una
nazione in	un	dato periodo di	tempo.
World	Bank	API: Ad	esempio
Come	si costruisce una richiesta con	parametri
http://api.worldbank.org/countries/it/indicators/NY.GDP.MKTP.CD?format=json&per_page=500&date=1975:2015
Endpoint i parametri (Query	string)
Argomento di	studio:	
Documentazione dell’API World	Bank
Esempio di	una richiesta con	i
parametri dal	sito World	Bank	
“Developer	Resources”:
- endpoint	
- “countries/br/…”	si	referisce	
al	codice a	due	cifre ISO	per	
il	paese (ad	esempio,	Brasile)
- “/indicators/”	significa gli
indicatori economici
- NY.GDP.MKTP.CD
Tipo	di	indicatori																			
(il	codice	GDP	=	PIL)
Come si sa costruire una richiesta?	
Si	deve sostituire il codice del	paese
Brasile (BR)	con	quello dell’Italia (IT	)
Esplorare la	struttura dell’oggetto:	
Una	richiesta all’API
Fare	le	prove	dell’oggetto nel Browser
Fare	le	prove	con	“curl”:	
NOTES:	https://datahelpdesk.worldbank.org/knowledgebase/articles/902064-development-best-practices/
POSTMAN	al	salvataggio!
L’interfaccia di	POSTMAN:
Entra i parametri per	ottenere i dati economici
Si	aggiunge una descrizione nel:	“Description”
Le	collezioni:	Si	aggiungono le	note	sulla cartella
Una	descrizione
per	chiarificare il
nostro obbiettivo
Entra le	note	nella cartella
Crea un	link	per	
condividere la	
ricerca con	i tuoi
colleghi
Clicca sul
pulsante
“view	in	web”
“View	in	Web”	(il pulsante)
Si	crea la	documentazione
dell’	API	ad	un	sito Web
Salva la	richiesta dell’API ad	una collezione
Nome	della richiesta.
dovrebbe essere unico
Salva la	richiesta
ad	una collezione,	
oppure si crea una
collezione nuova.
Capitolo III:	da	POSTMAN	al	Python
La	Prima	App	nel	Django:	Analista
https://docs.djangoproject.com/en/1.11/intro/tutorial01/
Entra il comando shell	per	iniziare un	progetto:	
• $ django-admin	startproject mysite
Verifica che il progetto funziona…
• $ python	manage.py runserver
File	partizionato (su a	giu):	
“mysite/” e’	un	contenitore per	il
progetto,	su di	cui	scegli tu il nome.	
manage.py:	Il	programmazione ‘shell’	
che ti da	permesso ad	interagire col	
progetto Django	nelle maniere diverse.	
Leggi:	
https://docs.djangoproject.com/en/1.1
1/ref/django-admin/
“mysite/” (dentro)	e’	l’applicazione
attuale per	il progetto di	Python	Django.		
Ci	vuole usare questo nome per	
importare qualcos’altro,	qui	dentro
(e.g. mysite.urls).
Django	Web	Framework	
• Un	Django	Project	puo’	avere molte applicazioni,	ed ha	:
• Un’applicazione centrale
• Altre applicazioni che rappresentano un	solo	aspetto (accounts).
• DB:	SQLite	e’	solo	per	lo	sviluppo (PostGres,	MySQL,	NoSQL)
• Le	applicazioni devono essere registrate nel file:	settings.py:
INSTALLED_APPS =	[
'django.contrib.admin',
'django.contrib.auth',
[…	ecc.]
’analista.apps.AnalistaConfig’…..	(ecc)
]
“Analista/”	esiste al	livello superiore
analista/
__init__.py
admin.py
apps.py
migrations/	
__init__.py
models.py
tests.py
views.py
manage.py
Django	si usa MTV:	3	Livelli di	Astrazione
Il modello(M) Definisce classi di	oggetti nel file	models.py.		Si	definisce:
- Come	si accede	ai dati
- Come	si convalidano i dati
- Quali sono i rapporti tra i modelli (opzionale)
Template	(T) Definisce le	funzioni che agiscono sui	dati.	Il	risultato:
- Come	appare una pagina Web
View	(V)		La	logica che definisce:	
- Come	i template	vengono presentati all’utente
models.py:	“Economic	Snapshot”
Focalizziamo:
• Anno
• Valore
• Paese
Dobbiamo	registrare	gli	URL
Il	file	preposto	
è	urls.py;	
apriamolo	in	
modifica	con	il	
nostro	editor	
preferito
views.py:	logica che rende visibile i template
Nota	bene:	
Abbiamo	integrato	la	richiesta	
da	prima,	cio’ che:	
- endpoint
- i	parametri
(vedi	alla	sinistra)
Per	vedere	la	stringa	intera	
(anche	i	file),	guarda	al	sito:
https://analistapp.glitch.me
templates/simple_chart.html
Creiamo un	App!
AnalistApp
Vi	raccomando solo usare Google	Chrome
https://analistapp.glitch.me
Applicazione Prototipo
PIL	in	Italia:	1995- 2015
I	Termini	Economici
GDP	=	PIL:	
Prodotto Interno Lordo:	Misura il valore di	mercato aggregato di	
tutte le	merci	finite	e	di	tutti i servizi prodotti nei confini di	una
nazione in	un	dato periodo di	tempo.
GNI	=	RNL:	
Reddito Nazionale Lordo di	un	paese viene calcolato sommando
al	prodotto interno lordo (PIL),
o	sottraendo da	esso,	vari flussi di	reddito tra paesi.
FDI	=	IDE:
Investimento Diretto all'estero.
Contabilità nazionale nella quale	vengono indicati i trasferimenti
di	capitale e	di	tecnologie da	un	paese all'altro.
Abbiamo tante delle possibilità:
Fare	più ricerca sull'API per	capire bene	tutte le	risorse disponibile
Fare	più delle richieste all'API per	sviluppare l'applicazione
• GNI
• FDI
• ecc.
Sviluppare più delle viste (views.py)
Sviluppare un'applicazione più completa!
Ed	altre informazioni…
Arrivaderci App	Postman	per	Google	Chrome:
• http://blog.getpostman.com/2017/11/01/goodbye-postman-chrome-
app/
Puoi scaricare l’app Postman	per	Windows,	Mac,	oppure Linux:
• https://www.getpostman.com/apps
Le	Fonti
Django	Girls	Tutorial	(Italiano):	https://tutorial.djangogirls.org/it/
Django	Girls	Tutorial	(Inglese):	https://www.gitbook.com/book/djangogirls/djangogirls-
tutorial/details
Django	Documentation:	https://docs.djangoproject.com/en/1.11/intro/tutorial01/
Postman	Community	Survey:
http://pages.getpostman.com/rs/067-UMD-991/images/Postman-Survey-Results-Infographic.pdf
Programmable	Web:	
https://www.programmableweb.com/news/programmableweb-api-directory-eclipses-17000-api-
economy-continues-surge/research/2017/03/13
Simone	Carletti Blog
https://simonecarletti.it/blog/2006/09/che-cosa-sono-le-api-application-programming-
interface/#disqus_thread
Ultimate	Django:	https://ultimatedjango.com/
World	Bank	API:	https://datahelpdesk.worldbank.org/knowledgebase/articles/898581-api-basic-
call-structure

More Related Content

Similar to Postman&PythonDjango2017Italiano

Modern web development with python and Web2py
Modern web development with python and Web2pyModern web development with python and Web2py
Modern web development with python and Web2pyDavide Marzioni
 
Django & Google App Engine: a value composition
Django & Google App Engine: a value compositionDjango & Google App Engine: a value composition
Django & Google App Engine: a value compositionOpen Makers Italy
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di GoogleMssiStf
 
Progressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&MoreProgressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&MoreFrancescoGiammanco1
 
TYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseTYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseMauro Lorenzutti
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugianifirenze-gtug
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Smau Roma 2012 Mob App Camp put social in your app
Smau Roma 2012 Mob App Camp put social in your appSmau Roma 2012 Mob App Camp put social in your app
Smau Roma 2012 Mob App Camp put social in your appSMAU
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Giorgio Carpoca
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMSRoberto Polillo
 
2 Esercitazione (18/19)
2 Esercitazione (18/19)2 Esercitazione (18/19)
2 Esercitazione (18/19)Andrea Gorrini
 
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"PyCon Italia
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
 

Similar to Postman&PythonDjango2017Italiano (20)

Modern web development with python and Web2py
Modern web development with python and Web2pyModern web development with python and Web2py
Modern web development with python and Web2py
 
Smart api
Smart apiSmart api
Smart api
 
Django & Google App Engine: a value composition
Django & Google App Engine: a value compositionDjango & Google App Engine: a value composition
Django & Google App Engine: a value composition
 
Il PaaS di Google
Il PaaS di GoogleIl PaaS di Google
Il PaaS di Google
 
Sviluppare applicazioni Facebook
Sviluppare applicazioni FacebookSviluppare applicazioni Facebook
Sviluppare applicazioni Facebook
 
Java&Solidarieta
Java&SolidarietaJava&Solidarieta
Java&Solidarieta
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Progressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&MoreProgressive Web App per presentazione Skills&More
Progressive Web App per presentazione Skills&More
 
TYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseTYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo Enterprise
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Smau Roma 2012 Mob App Camp put social in your app
Smau Roma 2012 Mob App Camp put social in your appSmau Roma 2012 Mob App Camp put social in your app
Smau Roma 2012 Mob App Camp put social in your app
 
Presentazione Corso - Parte 3
Presentazione Corso - Parte 3Presentazione Corso - Parte 3
Presentazione Corso - Parte 3
 
7. Applicazioni Web e CMS
7. Applicazioni Web e CMS7. Applicazioni Web e CMS
7. Applicazioni Web e CMS
 
2 Esercitazione (18/19)
2 Esercitazione (18/19)2 Esercitazione (18/19)
2 Esercitazione (18/19)
 
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
zc.buildout: "Un modo estremamente civile per sviluppare un'applicazione"
 
Buildout
BuildoutBuildout
Buildout
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 

Postman&PythonDjango2017Italiano