Httpie — ένας πελάτης HTTP κονσόλας με σύνταξη ευανάγνωστη για τον άνθρωπο και έγχρωμη έξοδο, που προορίζεται για τον έλεγχο API από τη γραμμή εντολών. Το εργαλείο χρησιμοποιεί διαισθητική σύνταξη: http GET https://api.example.com/users χωρίς να χρειάζεται να καθορίσετε σημαίες για τις κεφαλίδες και το σώμα του αιτήματος. Σύμφωνα με τα Httpie CLI Documentation (2026), το βοηθητικό πρόγραμμα υποστηρίζει JSON από προεπιλογή, συνεδρίες, έλεγχο ταυτότητας και πρόσθετα.
Βασικά σημεία
Httpie (ή HTTPie) — ένα βοηθητικό πρόγραμμα κονσόλας γραμμένο σε Python, που απλοποιεί την αποστολή αιτημάτων HTTP σε σύγκριση με το cURL. Η κύρια διαφορά είναι η σύνταξη κοντά στη φυσική γλώσσα: τα ορίσματα χωρίζονται με κενά, οι κεφαλίδες ορίζονται με άνω και κάτω τελεία, και τα δεδομένα JSON — με το σύμβολο ισότητας, χωρίς να χρειάζεται διαφυγή των εισαγωγικών.
Το ίδιο αίτημα POST στο cURL απαιτεί τουλάχιστον τρεις σημαίες (-X, -H, -d) και χειροκίνητη διαφυγή του JSON. Το Httpie κάνει το ίδιο με τρεις λέξεις χωρίς σημαίες, ορίζοντας αυτόματα Content-Type: application/json και χρωματίζοντας την έξοδο. Η απάντηση μορφοποιείται από προεπιλογή με εσοχές και επισήμανση σύνταξης.
| Λειτουργία | cURL | Httpie |
|---|---|---|
| Αίτημα GET | curl https://api.example.com | http GET https://api.example.com |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com | http POST https://api.example.com name=test |
| Κεφαλίδα | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie χρησιμοποιεί ενιαία μορφή γραμμής εντολών χωρίς σημαίες για τις βασικές παραμέτρους. Η μέθοδος HTTP ορίζεται ως πρώτο όρισμα (GET, POST, PUT, DELETE, PATCH), το URL — ως δεύτερο. Αν η μέθοδος παραλειφθεί, το Httpie επιλέγει αυτόματα GET (για αιτήματα χωρίς σώμα) ή POST (με σώμα).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Το Httpie καθορίζει αυτόματα τον τύπο δεδομένων: αν δοθεί key=value — το σώμα αποστέλλεται ως JSON. Αν δοθεί ακατέργαστο κείμενο μέσω --raw — ως απλό κείμενο. Η μορφή form-data ενεργοποιείται με τη σημαία -f.
# Αίτημα POST με δεδομένα JSON και κεφαλίδα
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Απάντηση με επισήμανση και Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
Σειριοποίηση JSON στο Httpie λειτουργεί αυτόματα: η τιμή που δίνεται ως key=value γίνεται πεδίο συμβολοσειράς JSON. Για αριθμούς και λογικές τιμές χρησιμοποιείται το key:=value. Ένθετα αντικείμενα δημιουργούνται με σημειογραφία τελείας: address.city=Moscow.
Το Httpie υποστηρίζει τη μορφή multipart/form-data για φόρτωση αρχείων και δεδομένων μέσω της σύνταξης key@path. Αν χρειάζεται να σταλεί το περιεχόμενο ενός αρχείου ως ακατέργαστο σώμα αιτήματος, χρησιμοποιείται ανακατεύθυνση εισόδου: http POST example.com < file.json. Για λήψη της απάντησης σε αρχείο χρησιμοποιείται η σημαία -d (download).
# Αποστολή JSON από αρχείο
http POST https://api.example.com/users < user.json
# Φόρτωση αρχείου μέσω multipart
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Συνεδρίες στο Httpie αποθηκεύουν κατάσταση μεταξύ αιτημάτων: cookies, κεφαλίδες και παραμέτρους ελέγχου ταυτότητας. Η συνεδρία δημιουργείται με τη σημαία --session=name. Τα δεδομένα της συνεδρίας αποθηκεύονται σε αρχείο JSON στον φάκελο ~/.httpie/sessions/. Μια συνεδρία με το επίθημα :readonly δεν ενημερώνεται μετά το αίτημα.
Πρώτα εκτελείται ένα POST στο /auth/login με διαπιστευτήρια — ο διακομιστής επιστρέφει το cookie της συνεδρίας. Όλα τα επόμενα αιτήματα προς προστατευμένα τελικά σημεία εντός της ίδιας συνεδρίας αποστέλλουν αυτόματα το αποθηκευμένο cookie, προσομοιώνοντας τη συμπεριφορά του προγράμματος περιήγησης κατά τον έλεγχο του API μιας εφαρμογής κινητού.
# Βήμα 1: έλεγχος ταυτότητας
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# Βήμα 2: αίτημα με αποθηκευμένο cookie συνεδρίας
http --session=app-test GET https://api.example.com/users/me
Httpie υποστηρίζει όλους τους βασικούς τύπους ελέγχου ταυτότητας μέσω σημαιών: -a user:pass για Basic Auth, --auth-type=digest για Digest, --auth-type=bearer TOKEN για Bearer Token. Προσαρμοσμένες κεφαλίδες προστίθενται ως HeaderName:value σε οποιοδήποτε σημείο της εντολής.
Για τον έλεγχο API με OAuth 2.0, το διακριτικό μεταβιβάζεται μέσω της κεφαλίδας Authorization. Το Httpie δεν διαχειρίζεται τον κύκλο ζωής του διακριτικού σε επίπεδο πυρήνα — αυτό το κάνει ένα εξωτερικό σενάριο. Η εντολή http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource ισοδυναμεί με τη ρητή δήλωση της κεφαλίδας με διακριτικό.
Httpie είναι ιδανικό για αγωγούς CI/CD χάρη στις μηδενικές εξαρτήσεις (εκτός από το Python) και την ευανάγνωστη έξοδο. Οι εντολές διαβάζονται εύκολα στα αρχεία καταγραφής χωρίς επιπλέον ανάλυση. Το εργαλείο εγκαθίσταται μέσω pip και είναι διαθέσιμο σε όλες τις δημοφιλείς εικόνες Docker, συμπεριλαμβανομένων των Alpine, Ubuntu και των επίσημων εικόνων των συστημάτων CI Jenkins και GitLab. Αυτό καθιστά το Httpie βολική επιλογή για αυτοματοποιημένο έλεγχο REST API και μικροϋπηρεσιών.
Τυπικό σενάριο — έλεγχος της κατάστασης του API μετά το deploy της εφαρμογής. Το Httpie στέλνει αίτημα στο health-τελικό σημείο και τερματίζει με μη μηδενικό κωδικό αν η απάντηση δεν αντιστοιχεί στην αναμενόμενη. Η σημαία --check-status επιστρέφει αυτόματα σφάλμα σε κωδικό κατάστασης >= 300.
# Έλεγχος υγείας στο σενάριο deploy
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "Το API είναι υγιές" || \
echo "Ο έλεγχος του API απέτυχε"
Httpie υποστηρίζει πρόσθετα μέσω του συστήματος Package Index. Τα πρόσθετα προσθέτουν νέους τύπους ελέγχου ταυτότητας, μορφές σειριοποίησης και κανάλια μεταφοράς. Η εγκατάσταση γίνεται μέσω pip: pip install httpie-plugin-name. Μετά την εγκατάσταση, το πρόσθετο ενεργοποιείται αυτόματα στην επόμενη εκκίνηση του Httpie.
Το Httpie υποστηρίζει φιλτράρισμα παρόμοιο με το jq μέσω της επιλογής --pretty=format και έξοδο συμβατή με cURL μέσω --print. Η σημαία --quiet απενεργοποιεί την έγχρωμη έξοδο για καλύτερη αναγνωσιμότητα στα αρχεία καταγραφής CI. Για προγραμματική επεξεργασία της απάντησης χρησιμοποιήστε τη σημαία --body, η οποία εμφανίζει μόνο το σώμα της απάντησης χωρίς κεφαλίδες.
# Εξαγωγή πεδίου από την απάντηση JSON με jq
http GET https://api.example.com/users/1 | jq '.name'
# Εμφάνιση μόνο του σώματος της απάντησης (χωρίς κεφαλίδες)
http --body GET https://api.example.com/health
# Μαζική αποστολή με διαφορετικά δεδομένα από το αρχείο
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie υποστηρίζει μορφές εξόδου μέσω της σημαίας --print: H (κεφαλίδες αιτήματος), B (σώμα αιτήματος), h (κεφαλίδες απάντησης), b (σώμα απάντησης). Ο συνδυασμός --print=hb εμφανίζει μόνο τις κεφαλίδες και το σώμα της απάντησης. Η σημαία --pretty=all ενεργοποιεί την έγχρωμη μορφοποίηση με εσοχές.
Το Httpie υποστηρίζει προσαρμογή μέσω της μεταβλητής HTTPIE_COLORS. Ορίστε χρώμα για το URL, τις κεφαλίδες, το JSON και τους κωδικούς κατάστασης. Διατίθενται ενσωματωμένα θέματα: autumn, borland, fruity, monokai, native, tango για διαφορετικά τερματικά.
Για προγραμματική επεξεργασία χρησιμοποιήστε το --body --pretty=none, το οποίο επιστρέφει ακατέργαστο JSON. Η συμπαγής έξοδος είναι χρήσιμη για μεταβίβαση σε jq, sed και άλλα εργαλεία ανάλυσης κατά την αυτοματοποίηση του ελέγχου API σε δέσμες ενεργειών.
Httpie υποστηρίζει πολλές μορφές εξόδου μέσω της σημαίας --print: H (κεφαλίδες αιτήματος), B (σώμα αιτήματος), h (κεφαλίδες απάντησης), b (σώμα απάντησης). Ο συνδυασμός --print=hb εμφανίζει μόνο τις κεφαλίδες και το σώμα της απάντησης, εξαιρώντας τις μεταπληροφορίες σχετικά με τη σύνδεση. Η σημαία --pretty=all ενεργοποιεί την έγχρωμη μορφοποίηση με εσοχές για αναγνωσιμότητα.
Το Httpie υποστηρίζει προσαρμογή χρωμάτων μέσω της μεταβλητής περιβάλλοντος HTTPIE_COLORS. Μπορείτε να ορίσετε χρώμα για το URL, τις κεφαλίδες, τα κλειδιά JSON και τους κωδικούς κατάστασης της απάντησης. Διατίθενται ενσωματωμένα θέματα: autumn, borland, fruity, monokai, native και tango για διαφορετικούς τύπους τερματικών και προσωπικές προτιμήσεις.
Για προγραμματική επεξεργασία της εξόδου χρησιμοποιήστε τον συνδυασμό σημαιών --body --pretty=none, ο οποίος επιστρέφει ακατέργαστο JSON χωρίς χρώματα και εσοχές. Η συμπαγής έξοδος είναι χρήσιμη για μεταβίβαση σε jq, sed και άλλα εργαλεία ανάλυσης κονσόλας κατά την αυτοματοποίηση του ελέγχου REST API σε σενάρια κελύφους.
Συχνές ερωτήσεις
Httpie προσφέρει πιο ευανάγνωστη σύνταξη χωρίς σημαίες για βασικές λειτουργίες, αυτόματη σειριοποίηση JSON, έγχρωμη επισήμανση της απάντησης και ενσωματωμένη υποστήριξη συνεδριών. Το cURL παραμένει απαραίτητο για λειτουργίες χαμηλού επιπέδου: εργασία με FTP, SMTP και μη τυπικά πρωτόκολλα.
Χρησιμοποιήστε τη σημαία -f (ή --form): http -f POST example.com name=John file@~/photo.jpg. Το Httpie θα ορίσει αυτόματα Content-Type: multipart/form-data. Χωρίς τη σημαία -f τα δεδομένα αποστέλλονται ως application/json.
Ναι, το Httpie υποστηρίζει HTTPS. Για αυτο-υπογεγραμμένα πιστοποιητικά χρησιμοποιήστε τη σημαία --verify=no. Για τον ορισμό προσαρμοσμένου αρχείου CA: --verify=/path/to/cert.pem. Από προεπιλογή, ο έλεγχος πιστοποιητικού είναι ενεργός.
Όχι, το Httpie δεν υποστηρίζει WebSocket και προορίζεται αποκλειστικά για το πρωτόκολλο HTTP/HTTPS. Για WebSocket χρησιμοποιήστε websocat ή wscat. Το Httpie επικεντρώνεται σε REST, GraphQL και λειτουργίες αρχείων.
Χρησιμοποιήστε τη σημαία -d (download): http -d GET https://example.com/file.zip. Το Httpie θα αποθηκεύσει το αρχείο με το αρχικό όνομα από την κεφαλίδα Content-Disposition ή το URL. Για προσαρμοσμένο όνομα ορίστε -o output.zip.
Συμπέρασμα
http [method] URL [key=value] [Header:value] δεν απαιτεί σημαίες για τα περισσότερα αιτήματα.Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης