Μετατροπή curl σε Go

Μετατρέψτε εντολές curl σε κώδικα Go χρησιμοποιώντας το τυπικό πακέτο net/http. Το curl2code εκτελείται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας μέσω WebAssembly — τα δεδομένα σας παραμένουν ιδιωτικά. Αν προτιμάτε μια γλώσσα υψηλότερου επιπέδου, δοκιμάστε τον μετατροπέα curl σε Python. Για προγραμματισμό συστημάτων, δείτε το curl σε Rust. Παρακάτω υπάρχουν έτοιμα προς χρήση παραδείγματα Go.

Πώς να αντιγράψετε το curl από το πρόγραμμα περιήγησής σας

  1. 1

    Ανοίξτε τα DevTools

    Πατήστε F12 ή Ctrl+Shift+I για να ανοίξετε τα εργαλεία προγραμματιστή του προγράμματος περιήγησης.

  2. 2

    Μεταβείτε στην καρτέλα Network

    Κάντε κλικ στην καρτέλα Network και εκτελέστε την ενέργεια που ενεργοποιεί το αίτημα HTTP.

  3. 3

    Αντιγραφή ως cURL

    Κάντε δεξί κλικ στο αίτημα → CopyCopy as cURL. Στη συνέχεια, επικολλήστε το παραπάνω.

Συχνές Ερωτήσεις

Τι είναι το Go net/http;

Το net/http της Go είναι ένας πελάτης και διακομιστής HTTP επιπέδου παραγωγής που περιλαμβάνεται στην πρότυπη βιβλιοθήκη. Δεν απαιτεί εξωτερικές εξαρτήσεις, υποστηρίζει HTTP/2 από προεπιλογή και παρέχει connection pooling, χρονικά όρια και ρύθμιση TLS έτοιμα προς χρήση. Είναι η μόνη βιβλιοθήκη που χρησιμοποιεί το curl2code για την Go — δεν χρειάζονται πακέτα τρίτων.

net/http vs HTTP πελάτες τρίτων στην Go — ποιο να χρησιμοποιήσω;

Το net/http της Go είναι αρκετά ισχυρό για τις περισσότερες περιπτώσεις χρήσης — σε αντίθεση με πολλές γλώσσες, η πρότυπη βιβλιοθήκη είναι έτοιμη για παραγωγή. Επιλογές τρίτων όπως το resty προσθέτουν ευκολία (αυτόματες επαναλήψεις, αλυσιδωτές κλήσεις) αλλά προσθέτουν εξαρτήσεις. Για μια παρόμοια προσέγγιση «όλα σε ένα», δείτε τον μετατροπέα curl σε Rust (reqwest) ή τον μετατροπέα curl σε Python.

Πώς γίνεται ο χειρισμός της ταυτοποίησης στην Go;

Ορίστε την κεφαλίδα Authorization με το req.Header.Set("Authorization", "Bearer "+token). Για Basic auth, χρησιμοποιήστε το req.SetBasicAuth(user, pass) το οποίο ορίζει την κεφαλίδα αυτόματα. Το curl2code ανιχνεύει τα -u και -H 'Authorization: ...' και παράγει τον σωστό κώδικα Go.

Πώς στέλνω δεδομένα φόρμας multipart στην Go;

Χρησιμοποιήστε το πακέτο mime/multipart: δημιουργήστε έναν writer με multipart.NewWriter(body), προσθέστε πεδία με CreateFormField και αρχεία με CreateFormFile. Ορίστε το Content-Type σε writer.FormDataContentType(). Το curl2code χειρίζεται όλες τις μετατροπές της σημαίας -F.

Πώς γίνεται ο χειρισμός σφαλμάτων HTTP στην Go;

Η Go χρησιμοποιεί ρητές επιστροφές σφαλμάτων: πάντα να ελέγχετε το if err != nil μετά το http.Do(req). Στη συνέχεια, ελέγξτε το resp.StatusCode για σφάλματα επιπέδου HTTP. Πάντα να χρησιμοποιείτε το defer resp.Body.Close() για να αποτρέψετε διαρροές πόρων. Αυτός ο ρητός χειρισμός σφαλμάτων είναι ένα βασικό μοτίβο της Go — χωρίς εξαιρέσεις, χωρίς try/catch.

Πώς πραγματοποιούνται ταυτόχρονα αιτήματα HTTP στην Go;

Χρησιμοποιήστε goroutines με sync.WaitGroup ή κανάλια (channels). Ξεκινήστε κάθε αίτημα σε μια goroutine με go func() { ... }(). Για περιορισμένο ταυτοχρονισμό, χρησιμοποιήστε ένα κανάλι σηματοφόρου (semaphore channel). Οι goroutines της Go είναι ελαφριές — μπορείτε εύκολα να διαχειριστείτε χιλιάδες ταυτόχρονα αιτήματα. Για παρόμοια μοτίβα ταυτοχρονισμού, δείτε το curl σε Rust.

Πώς ορίζονται τα χρονικά όρια στον HTTP πελάτη της Go;

Ορίστε το client.Timeout για τη συνολική προθεσμία του αιτήματος. Για λεπτομερή έλεγχο, χρησιμοποιήστε το context.WithTimeout ή το context.WithDeadline και περάστε το context στο http.NewRequestWithContext. Η σημαία --connect-timeout του curl αντιστοιχίζεται στο χρονικό όριο Transport.DialContext, ενώ η --max-time στο client.Timeout.

Πώς ρυθμίζεται ένας διακομιστής μεσολάβησης (proxy) στην Go;

Ορίστε το Transport.Proxy σε http.ProxyURL(proxyUrl) σε ένα προσαρμοσμένο http.Transport. Η Go σέβεται επίσης τις μεταβλητές περιβάλλοντος HTTP_PROXY και HTTPS_PROXY από προεπιλογή μέσω του http.ProxyFromEnvironment. Το curl2code μετατρέπει τις σημαίες -x και --proxy στην κατάλληλη ρύθμιση proxy της Go.

Πώς να στείλετε ένα POST αίτημα με JSON σώμα στην Go;

Μετατρέψτε μια curl POST εντολή όπως curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL σε Go χρησιμοποιώντας το curl2code. Ο παραγόμενος κώδικας χρησιμοποιεί http.Post(url, "application/json", bytes.NewBuffer(jsonData)). Το curl2code εντοπίζει αυτόματα τα -d/--data flags με JSON περιεχόμενο και ορίζει την κατάλληλη Content-Type κεφαλίδα στον κώδικα net/http.

Πώς να προσθέσετε εξουσιοδότηση Bearer token στην Go;

Περάστε το curl -H "Authorization: Bearer YOUR_TOKEN" URL στο curl2code και αυτό θα δημιουργήσει κώδικα net/http με την κεφαλίδα εξουσιοδότησης: req.Header.Set("Authorization", "Bearer YOUR_TOKEN"). Το curl2code εντοπίζει τα Bearer tokens τόσο από τα -H "Authorization: Bearer ..." όσο και από τα --oauth2-bearer flags. Για Basic auth, χρησιμοποιήστε το -u user:pass.

Πώς να ορίσετε την κεφαλίδα Content-Type στην Go;

Το curl2code μετατρέπει το curl -H "Content-Type: application/json" URL σε κώδικα net/http με τη σωστή κεφαλίδα: req.Header.Set("Content-Type", "application/json"). Για δεδομένα -d, το curl χρησιμοποιεί από προεπιλογή το application/x-www-form-urlencoded· για μεταφορτώσεις φορμών -F, χρησιμοποιεί το multipart/form-data. Το curl2code αντιστοιχίζει το καθένα στο σωστό net/http API.

Χρήσιμοι σύνδεσμοι

Οδηγοί curl

Μετατροπή curl σε άλλες γλώσσες