Chuyển đổi curl sang Go
Chuyển đổi các lệnh curl thành mã Go bằng gói net/http tiêu chuẩn. curl2code chạy hoàn toàn trong trình duyệt của bạn thông qua WebAssembly — dữ liệu của bạn luôn được riêng tư. Nếu bạn thích một ngôn ngữ cấp cao hơn, hãy thử trình chuyển đổi curl sang Python của chúng tôi. Đối với lập trình hệ thống, hãy xem curl sang Rust. Dưới đây là các ví dụ Go sẵn sàng sử dụng.
Cách sao chép curl từ trình duyệt của bạn
- 1
Mở DevTools
Nhấn F12 hoặc Ctrl+Shift+I để mở công cụ dành cho nhà phát triển của trình duyệt.
- 2
Đi tới tab Network
Nhấp vào tab Network và thực hiện hành động kích hoạt yêu cầu HTTP.
- 3
Sao chép dưới dạng cURL
Nhấp chuột phải vào yêu cầu → Sao chép → Copy as cURL. Sau đó dán nó vào bên trên.
Câu hỏi thường gặp
Go net/http là gì?
net/http của Go là một HTTP client và server cấp độ sản xuất được bao gồm trong thư viện chuẩn. Nó không yêu cầu phụ thuộc bên ngoài, hỗ trợ HTTP/2 theo mặc định và cung cấp connection pooling, timeout và cấu hình TLS tích hợp sẵn. Đây là thư viện duy nhất curl2code sử dụng cho Go — không cần gói bên thứ ba.
net/http so với các Go HTTP client bên thứ ba — nên sử dụng cái nào?
net/http của Go đủ mạnh mẽ cho hầu hết các trường hợp sử dụng — không giống như nhiều ngôn ngữ khác, thư viện chuẩn của Go đã sẵn sàng cho sản xuất. Các tùy chọn bên thứ ba như resty thêm sự tiện lợi (tự động thử lại, chaining) nhưng thêm phụ thuộc. Để có cách tiếp cận đầy đủ tính năng tương tự, hãy xem trình chuyển đổi curl sang Rust (reqwest) hoặc curl sang Python của chúng tôi.
Làm thế nào để xử lý xác thực trong Go?
Thiết lập header Authorization với req.Header.Set("Authorization", "Bearer "+token). Đối với xác thực Basic, sử dụng req.SetBasicAuth(user, pass) để tự động thiết lập header. curl2code phát hiện -u và -H 'Authorization: ...' và tạo mã Go chính xác.
Làm thế nào để gửi dữ liệu form multipart trong Go?
Sử dụng gói mime/multipart: tạo một writer với multipart.NewWriter(body), thêm các trường với CreateFormField và các tệp với CreateFormFile. Thiết lập Content-Type thành writer.FormDataContentType(). curl2code xử lý tất cả các chuyển đổi cờ -F.
Làm thế nào để xử lý lỗi HTTP trong Go?
Go sử dụng việc trả về lỗi rõ ràng: luôn kiểm tra if err != nil sau http.Do(req). Sau đó kiểm tra resp.StatusCode cho các lỗi cấp độ HTTP. Luôn sử dụng defer resp.Body.Close() để ngăn rò rỉ tài nguyên. Việc xử lý lỗi rõ ràng này là một mẫu cốt lõi của Go — không có ngoại lệ, không có try/catch.
Làm thế nào để thực hiện các yêu cầu HTTP đồng thời trong Go?
Sử dụng goroutine với sync.WaitGroup hoặc channel. Khởi chạy mỗi yêu cầu trong một goroutine với go func() { ... }(). Để giới hạn độ đồng thời, hãy sử dụng một semaphore channel. Các goroutine của Go rất nhẹ — bạn có thể dễ dàng xử lý hàng nghìn yêu cầu đồng thời. Để biết các mẫu đồng thời tương tự, hãy xem curl sang Rust.
Làm thế nào để thiết lập timeout trong Go HTTP client?
Thiết lập client.Timeout cho thời hạn tổng thể của yêu cầu. Để kiểm soát chi tiết, hãy sử dụng context.WithTimeout hoặc context.WithDeadline và truyền context vào http.NewRequestWithContext. Cờ --connect-timeout của curl ánh xạ tới timeout Transport.DialContext, --max-time ánh xạ tới client.Timeout.
Làm thế nào để cấu hình một proxy trong Go?
Thiết lập Transport.Proxy thành http.ProxyURL(proxyUrl) trên một http.Transport tùy chỉnh. Go cũng tuân thủ các biến môi trường HTTP_PROXY và HTTPS_PROXY theo mặc định thông qua http.ProxyFromEnvironment. curl2code chuyển đổi các cờ -x và --proxy sang cấu hình proxy Go tương ứng.
Làm thế nào để gửi một yêu cầu POST với thân JSON trong Go?
Chuyển đổi một lệnh curl POST như curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL sang Go bằng cách sử dụng curl2code. Mã được tạo sử dụng http.Post(url, "application/json", bytes.NewBuffer(jsonData)). curl2code tự động phát hiện các cờ -d/--data với nội dung JSON và thiết lập header Content-Type phù hợp trong mã net/http.
Làm thế nào để thêm xác thực Bearer token trong Go?
Cung cấp curl -H "Authorization: Bearer YOUR_TOKEN" URL cho curl2code và nó sẽ tạo mã net/http với header xác thực: req.Header.Set("Authorization", "Bearer YOUR_TOKEN"). curl2code phát hiện Bearer tokens từ cả hai cờ -H "Authorization: Bearer ..." và --oauth2-bearer. Đối với Basic auth, hãy sử dụng -u user:pass.
Làm thế nào để thiết lập header Content-Type trong Go?
curl2code chuyển đổi curl -H "Content-Type: application/json" URL sang mã net/http với header chính xác: req.Header.Set("Content-Type", "application/json"). Đối với dữ liệu -d, curl mặc định là application/x-www-form-urlencoded; đối với tải lên biểu mẫu -F, nó sử dụng multipart/form-data. curl2code ánh xạ từng loại tới net/http API chính xác.