Cum să începeți să utilizați Curl și de ce: o introducere practică

Fie că testează ieșirea unui API înainte de a-l implementa în producție, fie că pur și simplu preia un răspuns de pe un site web (de exemplu, pentru a verifica dacă nu este în jos), Curl este practic omniprezent.

Ca om de știință a datelor, a trebuit să o folosesc din când în când. Cu toate acestea, de cele mai multe ori am ajuns să înlocuiesc doar parametrii dintr-o comandă curl copiată și lipită care a înconjurat canalul Slack al echipei mele.

Am decis că trebuie să înțeleg mai bine acest instrument puternic dacă doresc să-l folosesc la potențialul său maxim și acum sunt aici pentru a împărtăși unele dintre cele mai interesante lucruri pe care le-am găsit în acest tutorial pentru curl.

Dacă aveți sfaturi sau trucuri pe care doriți să le adăugați, vă rugăm să faceți acest lucru în comentarii, deoarece înțelegerea mea despre acest instrument este încă în stadiile incipiente.

Curl: Pentru ce este bun?

Curl este un instrument din linia de comandă care ne permite să facem cereri HTTP de la shell. De asemenea, acoperă multe alte protocoale, cum ar fi FTP, deși depășesc sfera acestui tutorial.

Numele său înseamnă „Client URL” și a fost dezvoltat de dezvoltatorul suedez Daniel Stenberg. Este un proiect open source, iar codul său poate fi găsit aici, în caz că doriți să contribuiți.

Îl puteți invoca de la terminalul dvs. preferat și, de obicei, este preinstalat în sistemele de operare bazate pe Linux. În caz contrar, poate fi descărcat în mod normal prin apt-get pe Linux și preparat pe Mac.

Apelarea unei metode GET

În forma sa de bază, o comandă curl va arăta astfel:

curl //www.dataden.tech

Comportamentul implicit pentru curl este de a invoca o metodă HTTP GET pe adresa URL dată. În acest fel, ieșirea programului pentru acea comandă va fi întregul corp al răspunsului HTTP (în acest caz, HTML) pe care site-ul îl returnează pe un GET, care va fi scris așa cum este dat pe stdout .

Dacă doriți să citiți un răspuns fără să părăsiți shell-ul, vă recomand cel puțin să-l introduceți într-o comandă mai mică , pentru a putea parcurge cu ușurință ieșirea.

De multe ori vom dori să direcționăm conținutul răspunsului într-un fișier. Acest lucru se face cu argumentul -o , astfel:

curl -o output.html www.dataden.tech

care este echivalent cu:

curl www.dataden.tech > output.html

Opțional, puteți specifica adresa URL a site-ului pe care doriți să îl apelați curl cu un argument -s , astfel:

curl -s //www.dataden.tech

permițându-vă să schimbați ordinea argumentelor dvs.

De asemenea, puteți utiliza –next pentru a specifica mai multe adrese URL, deși documentul oficial vă sfătuiește să apelați în schimb curl pe fiecare adresă URL într-o comandă diferită.

Efectuarea unui POST la o adresă URL

Uneori veți dori să testați dacă un API funcționează corect și, de obicei, acest lucru va necesita trimiterea de argumente către acesta.

De obicei, vom face acest lucru prin metoda POST, trecând niște JSON cu toți parametrii necesari. Există multe modalități de a face acest lucru cu curl.

Puteți transmite valorile argumentelor dvs. astfel:

curl --data "name=John&surname=Doe" //www.dataden.tech

Sau ca un JSON obișnuit:

curl --data '{"name":"John","surname":"Doe"}' \//www.dataden.tech

Utilizarea –data este echivalentă cu utilizarea -d și ambele vor face ca metoda să se schimbe automat în POST. Cu toate acestea, putem folosi și steagul -X ( –solicitare ) pentru a specifica ce metodă dorim să invocăm:

curl -X "POST" \-d "name=John&surname=Doe" //www.example.com

Preluarea anteturilor site-ului

Uneori trebuie doar să vedem rapid dacă site-ul este încă în funcțiune, fără să vrem să încărcăm întregul răspuns potențial greu. Alteori, anteturile stochează configurații importante.

Aceste două cazuri de utilizare sunt, de asemenea, abordate de curl. Putem utiliza parametrul –include ( -i ) pentru a include anteturile și –head ( -I- asta este capitalul „i”) pentru a include doar anteturile (apelând metoda HEAD).

Setarea valorii utilizator-agent

Acum, că am acoperit elementele de bază, permiteți-mi să vă trec prin unele dintre cele mai tari lucruri pe care le-am găsit că le putem face cu buclele.

Argumentul utilizator-agent vă permite să specificați ce versiune de dispozitiv și de browser utilizați, în cazul în care site-ul face randarea diferită.

Cu aceasta, puteți vedea versiunea mobilă a unui site de pe laptopul dvs. sau invers.

Din punct de vedere al securității, acest lucru ridică probabil unele probleme. Nu știam cât de ușor este să pretind că folosesc un alt dispozitiv (fără a folosi chiar și o mașină virtuală) până acum și, lucrând în prevenirea fraudei, văd de ce ar putea fi o problemă.

Acestea fiind spuse, atâta timp cât utilizați definitiv acest lucru, acesta este un mod minunat de a vedea cum arată un site web de pe o tabletă, un dispozitiv mobil sau un laptop, pentru a numi câteva.

Iată un exemplu, direct din documentația oficială (deși listele de utilizatori-agenți sunt ușor disponibile online).

curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" www.example.com

Programarea unei conexiuni cu Curl

Un alt motiv pentru care am început să aflu mai multe despre curl a fost că am vrut să văd cât timp a durat exact ca site-ul meu să răspundă.

Deși documentația de bază nu o acoperă, un pic de googling a descoperit această comandă, pe care am găsit-o foarte utilă:

curl -w "%{time_total}\n" -o /dev/null -s www.example.com

Aceasta va scoate pur și simplu timpul total necesar pentru a prelua răspunsul din domeniul dat.

Mai general, argumentul -w (–write-out) ia un șir special de formatare și completează cuvinte cheie rezervate cu proprietăți diferite ale răspunsului, într-un mod formatat. Toate cuvintele cheie și valorile lor respective sunt disponibile în pagina manuală a comenzii.

Lecturi suplimentare

Iată câteva linkuri pe care le puteți găsi interesante, în cazul în care doriți să aflați mai multe despre acest subiect amplu:

  • Lista agenților utilizator O compilație a argumentelor utilizator-agent pentru diferite dispozitive și browsere.
  • Documentația oficială a lui Curl.
  • Pagina de mana a lui Curl.

A concluziona

Sper că ți s-a părut utilă această introducere și vei părăsi acest tutorial știind cel puțin elementele de bază ale acestei comenzi convenabile.

După cum am spus mai înainte, învăț și eu în continuare și voi aprecia orice alte informații interesante despre utilizarea programului. Același lucru este valabil pentru orice feedback despre ceea ce am scris până acum.

Dacă am făcut vreo greșeală sau dacă vreți o parte despre care credeți că aș fi putut redacta mai clar, vă rugăm să ne anunțați.

Sper să ne revedem în curând, codificare fericită!

Urmăriți-mă pe Medium și Twitter pentru a fi la curent cu tutorialele, sfaturile și articolele mele. Luați în considerare partajarea acestui articol cu ​​un prieten dezvoltator web dacă v-a plăcut (sau ca un mod pasiv agresiv de a le spune să învețe curl).

Publicat inițial pe www.dataden.tech pe 7 octombrie 2018.