Jak dla mnie jest to fajne narzędzie do podglądania nagłówków HTTP oraz wysłania czegoś POSTem bez konieczności użycia przeglądarki.
raz na jakiś czas do debugu jak nie mam dostępu do insomnii
próbowałem zaprzyjaźnić się z postmanem i nie wyszło. Próbowałem z indomią. Ale jak potrzebuje tokenu do autoryzacji w dziwnym systemie to wywołuje skrypt w bashu używający curla
Chociaż jak miałem pisać cis bardziej skomplikowanego to wolałem Scalę i jej klienta do HTTP
Ja tam lubię postmana :P
Jak coś testuję głównie. Prawie nic w webie nie robię, nie znam innych narzędzi, curl mi wystarcza.
A, no i pogodę nim sprawdzam: curl wttr.in/Miasto
:
Weather report: Katowice
\ / Partly cloudy
_ /"".-. +5(2) °C
\_( ). ↑ 17 km/h
/(___(__) 10 km
0.0 mm
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ Fri 23 Dec ├───────────────────────┬──────────────────────────────┐
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ .-. Light drizzle │ .-. Light drizzle │ Overcast │ Overcast │
│ ( ). +3(0) °C │ ( ). +5(1) °C │ .--. +4(1) °C │ .--. +4(1) °C │
│ (___(__) ↑ 12-23 km/h │ (___(__) ↗ 15-27 km/h │ .-( ). ↗ 13-21 km/h │ .-( ). ↗ 13-23 km/h │
│ ‘ ‘ ‘ ‘ 2 km │ ‘ ‘ ‘ ‘ 2 km │ (___.__)__) 10 km │ (___.__)__) 10 km │
│ ‘ ‘ ‘ ‘ 0.5 mm | 97% │ ‘ ‘ ‘ ‘ 0.5 mm | 89% │ 0.0 mm | 0% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ Sat 24 Dec ├───────────────────────┬──────────────────────────────┐
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ .-. Light drizzle │ _`/"".-. Patchy rain po…│ _`/"".-. Patchy rain po…│ Cloudy │
│ ( ). +6(2) °C │ ,\_( ). +7(4) °C │ ,\_( ). +7(3) °C │ .--. +4(2) °C │
│ (___(__) ↗ 19-31 km/h │ /(___(__) → 17-26 km/h │ /(___(__) ↗ 17-24 km/h │ .-( ). ↗ 12-21 km/h │
│ ‘ ‘ ‘ ‘ 2 km │ ‘ ‘ ‘ ‘ 10 km │ ‘ ‘ ‘ ‘ 10 km │ (___.__)__) 10 km │
│ ‘ ‘ ‘ ‘ 0.3 mm | 62% │ ‘ ‘ ‘ ‘ 0.1 mm | 68% │ ‘ ‘ ‘ ‘ 0.1 mm | 79% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
┌─────────────┐
┌──────────────────────────────┬───────────────────────┤ Sun 25 Dec ├───────────────────────┬──────────────────────────────┐
│ Morning │ Noon └──────┬──────┘ Evening │ Night │
├──────────────────────────────┼──────────────────────────────┼──────────────────────────────┼──────────────────────────────┤
│ Mist │ \ / Sunny │ \ / Partly cloudy │ Overcast │
│ _ - _ - _ - +3(1) °C │ .-. +6(4) °C │ _ /"".-. +4(2) °C │ .--. +4(2) °C │
│ _ - _ - _ ↗ 8-15 km/h │ ― ( ) ― ↗ 7-10 km/h │ \_( ). ↑ 7-13 km/h │ .-( ). ↖ 8-15 km/h │
│ _ - _ - _ - 2 km │ `-’ 10 km │ /(___(__) 10 km │ (___.__)__) 10 km │
│ 0.0 mm | 0% │ / \ 0.0 mm | 0% │ 0.0 mm | 0% │ 0.0 mm | 0% │
└──────────────────────────────┴──────────────────────────────┴──────────────────────────────┴──────────────────────────────┘
Location: Katowice, śląskie, Polska [50.2598987,19.0215852]
Curl jest przydatny w web scrappingu. Po wejściu do developer tools na FF mogę sobie klilknąć PPM na request i wybrać, aby zapisało jako curl. Następnie wklejam to w konsolę i stopniowo odzieram ze zbędnych nagłówków, ciastek i tokenów, aż zostaje minimalna ilość parametrów potrzebnych, by uzyskać dostęp do zasobu, po czym dopiero przerabiam to na request z biblioteki. Jest to na tyle powszechny pattern, że framework Scrapy udostępnia nawet funkcję pomocniczą scrapy.utils.curl.curl_to_request_kwargs
, które przerabiają takie polecenie na parametry konstruktora obiektu scrapy.http.Request
:
>>> from scrapy.utils.curl import curl_to_request_kwargs
>>> from pprint import pprint
>>>
>>> curl_to_request_kwargs("""curl 'http://bash.org.pl/latest/' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Referer: http://bash.org.pl/' -H 'Connection: keep-alive' -H 'Cookie: st=; lastid=4863595' -H 'Upgrade-Insecure-Requests: 1' -H 'DNT: 1' -H 'Sec-GPC: 1'""")
{'method': 'GET', 'url': 'http://bash.org.pl/latest/', 'headers': [('User-Agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0'), ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'), ('Accept-Language', 'en-US,en;q=0.5'), ('Accept-Encoding', 'gzip, deflate'), ('Referer', 'http://bash.org.pl/'), ('Connection', 'keep-alive'), ('Upgrade-Insecure-Requests', '1'), ('DNT', '1'), ('Sec-GPC', '1')], 'cookies': {'st': '', 'lastid': '4863595'}}
>>> pprint(_)
{'cookies': {'lastid': '4863595', 'st': ''},
'headers': [('User-Agent',
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) '
'Gecko/20100101 Firefox/108.0'),
('Accept',
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8'),
('Accept-Language', 'en-US,en;q=0.5'),
('Accept-Encoding', 'gzip, deflate'),
('Referer', 'http://bash.org.pl/'),
('Connection', 'keep-alive'),
('Upgrade-Insecure-Requests', '1'),
('DNT', '1'),
('Sec-GPC', '1')],
'method': 'GET',
'url': 'http://bash.org.pl/latest/'}
>>>
W sumie to zależy o jakim CURL piszesz czy takim z command line czy np. CURL z PHP?
Bo z PHP to regularnie z command line mniej ale jakieś skrypty monitorujące usługi itp. to jak najbardziej.
- do zapytania prostych endpointów np. jakieś testowe zapytanie jakiegoś serwisu albo specjalne strony takie jak cheat.sh
- jak chcę napisać jakiś prosty skrypt w bashu
-
Copy as a cURL
, curl to pewnego rodzaju standard w przesylaniu instrukcji na temat tego jak wykonać dane zapytanie - jak zapytanie idzie wolno to mogę to jakoś zdiagnozować przy użyciu https://stackoverflow.com/a/22625150/4638604
Korzystam przeważnie po to, żeby komuś pokazać przykład wywołania, albo jak chcę na szybko coś wykonać np zmieniając parametry, a w Postmanie nie chce mi się klikać. Sam poleceń raczej nie piszę tylko generuję z Postmana
Raczej nie korzystam z curla tj. bardzo sporadycznie gdy chce podeslac komuc cli komende itp itd - GUIowe narzedzia do API mi nie pasuja (postman/insomnia itp itd) w sensie jestem anty GUI - wiekszosc rzeczy robie w terminalu.
Na codzien do API cali po CLI uzywam httpie/curlie jest wygodniejsze i duzo latwiejsze w uzyciu.
Wolę już wget ale obu nie polecam.
Osobiście sam sobie napisałem narzedzia do webscrapa i nie musze się stresować jakimiś dziwnymi udogodnieniami i innymi problemami.
Mi się najfajniej używa klienta http bardziej tekstowego z autocomplete, do developmentu.
Postman dla pojedyńczych requestów jest taki no 3/10; ale fajnie można w nim budować kolekcje requestów do używania wielu calli na raz.
Skrypty - rzecz oczywista. Jako format zapisu requesta dość często. Na co dzień wolę klienta wbudowanego w IntelliJ
Jak jestem podpięty przez ssh do zdalnego hosta w chmurze i akurat muszę wykonać jakieś zapytanie testowe do API z poziomu basha.