Postgresql: come fare richieste HTTP da PL/pgSQL

Anche se pericoloso è oltremodo comodo poter eseguire chiamate HTTP da PL/pgSQL.
Ho trovato una estensione che sembra implementare questa funzionalità molto bene.
L’estensione in oggetto si chiama pgsql-http e la si può scaricare da:

https://github.com/pramsey/pgsql-http

L’unica problematica è che si deve compilare (non abbiamo a disposizione un comodo pacchetto) per fare questo è necessario, innanzitutto, installare quanto serve per lo sviluppo di una estensione (ovviamente avremo cura di fare ciò sul server di sviluppo e non su quello di produzione :)).
i comando da usare sono:

sudo apt-get install postgresql-server-dev-9.5 libcurl4-openssl-dev gcc

per qualche motivo può essere che alcuni di questi pacchetti siano già installati, se è il vostro caso: semplicemente ignorate l’errore del comando apt-get.
Come d’uso i comandi di installazione necessitano delle autorizzazioni amministrative perciò si usa il comando “sudo”, la particolarità in questo caso è che “sudo” non basta è necessario essere connessi come utente “root”; questo lo possiamo fare, ovviamente, collegandoci con l’utente root oppure usando il comando:

sudo su

Ora la prima cosa è posizionarci nella directory /usr/local/src con il comando:

cd /usr/local/src

i sorgenti li scarichiamo direttamente dal git con:

git clone https://github.com/pramsey/pgsql-http.git

e poi dopo esserci posizionati nella directory appena creata diamo i seguenti comandi:

make
make install

Al termine, dal nostro caro pgadminIII, diamo il comando SQL:

CREATE EXTENSION http;

Per provare se tutto funziona usiamo il comando:

SELECT (unnest(headers)).* from http_get('http://www.folstuff.eu')

il risultato deve essere questo (esportato su file csv da pgadminIII):

"field";"value"
"Date";"Sat, 19 Mar 2016 01:56:19 GMT"
"Server";"Apache/2.4.7 (Ubuntu)"
"X-Powered-By";"PHP/5.5.9-1ubuntu4.5"
"Set-Cookie";"PHPSESSID=cm4ttes1gacmgu2jus5gjl7dj7; path=/"
"Expires";"Thu, 19 Nov 1981 08:52:00 GMT"
"Cache-Control";"no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
"Pragma";"no-cache"
"X-Pingback";"http://www.folstuff.eu/xmlrpc.php"
"Vary";"Accept-Encoding"
"Connection";"close"
"Transfer-Encoding";"chunked"
"Content-Type";"text/html; charset=UTF-8"

Lascia un commento