{"id":12662,"date":"2017-08-25T11:53:29","date_gmt":"2017-08-25T09:53:29","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12662"},"modified":"2017-08-25T11:53:53","modified_gmt":"2017-08-25T09:53:53","slug":"curl-interagire-con-la-rete-da-riga-di-comando","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/curl-interagire-con-la-rete-da-riga-di-comando\/","title":{"rendered":"cURL: interagire con la Rete da riga di comando"},"content":{"rendered":"<p>Quando prepariamo le nostre applicazioni server, indipendentemente da quale sia la loro finalit\u00e0 (backend per mobile, supporto a siti web o altro ancora), dobbiamo necessariamente sottoporle a test. Ci sono strumenti molto comodi che permettono di effettuare\u00a0richieste HTTP di ogni genere &#8211; come <a href=\"http:\/\/www.devapp.it\/wordpress\/postman-sviluppa-le-tue-api-piu-velocemente\/\" target=\"_blank\" rel=\"noopener\">Postman<\/a>\u00a0di cui abbiamo gi\u00e0 parlato &#8211; ma per chi \u00e8 abituato all&#8217;essenzialit\u00e0 della riga di comando ci si pu\u00f2 rivolgere al classico <strong>cURL<\/strong>. Questo \u00e8 un software dall&#8217;uso molto diretto utilizzabile con tutti i protocolli\u00a0di rete\u00a0pi\u00f9 comuni: HTTP, FTP, DICT, LDAP, vari per la posta elettronica (SMTP, POP3, IMAP) e molti altri ancora, comprese le loro versioni &#8220;sicurizzate&#8221; con SSL\/TLS.<\/p>\n<p>E&#8217; disponibile in tutte le distribuzioni Linux ed ha la fama del tuttofare.\u00a0Vediamone alcuni\u00a0esempi:<\/p>\n<ol>\n<li>lettura di una pagina web, l&#8217;accesso pi\u00f9 semplice\n<pre class=\"lang:sh decode:true\">curl http:\/\/www.devapp.it<\/pre>\n<p>Con questo,\u00a0vedremo tutto il codice HTML corrispondente scorrere attraverso la riga di comando;<\/li>\n<li>salvataggio della pagina web letta\n<pre class=\"lang:sh decode:true \">curl http:\/\/www.devapp.it &gt; salva.html<\/pre>\n<p>il risultato sar\u00e0 contenuto nel file <em>salva.html<\/em><\/li>\n<li>interazione con <strong>servizi REST<\/strong>. A questo scopo, \u00e8 necessario passare un metodo HTTP (opzione <strong>-X<\/strong>), una o pi\u00f9 intestazioni (opzione <strong>-H<\/strong>) ed eventualmente dei dati (anteponendo <strong>-d<\/strong>). Si pu\u00f2 condurre una prova con cURL anche utilizzando un servizio di API REST dedicato alla sperimentazione come <a href=\"http:\/\/www.devapp.it\/wordpress\/jsonplaceholder-api-rest-online-fake-per-il-test-e-la-prototipazione\/\" target=\"_blank\" rel=\"noopener\">JSONPlaceholder<\/a>\n<pre class=\"lang:sh decode:true\">curl -X POST http:\/\/jsonplaceholder.typicode.com\/posts -H Content-type:application\/json -d '{\"title\":\"Mio messaggio\", \"username\":\"Pippo\"}'<\/pre>\n<p>ed il server risponder\u00e0<\/p>\n<pre class=\"lang:js decode:true\">{\r\n\"title\": \"Mio messaggio\",\r\n\"username\": \"Pippo\",\r\n\"id\": 101\r\n}<\/pre>\n<p>simulando l&#8217;inserimento dell&#8217;oggetto JSON nel database.<\/li>\n<\/ol>\n<p>Oltre a queste, il comando cURL ha svariate funzionalit\u00e0 illustrate nella documentazione ufficiale. Non avr\u00e0 l&#8217;aspetto amichevole di Postman ma per chi conosce bene il protocollo che deve utilizzare appare molto funzionale. Inoltre, essendo disponibile da riga di comando,\u00a0si presta facilmente all&#8217;inclusione in script.<\/p>\n<p>Alla prossima!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando prepariamo le nostre applicazioni server, indipendentemente da quale sia la loro finalit\u00e0 (backend per mobile, supporto&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13215,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[481],"tags":[1624,1818,1527,1643,1721,1414],"class_list":["post-12662","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-risorse-utili","tag-api-rest","tag-curl","tag-http","tag-https","tag-linux","tag-networking"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12662"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12662\/revisions"}],"predecessor-version":[{"id":13218,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12662\/revisions\/13218"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13215"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}