logo
GeekFormat

Trình chuyển đổi cURL sang mã nguồn

Nhập lệnh cURL

Dán lệnh cURL, tự động phân tích URL/phương thức/tiêu đề/body và tạo mã có thể chạy bằng 11 ngôn ngữ/thư viện (JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget)

Yêu cầu đã phân tích

https://api.example.com/items1 tiêu đềBody 15 ký tựcurlToCode.flag.followRedirects

Mã được tạo

curlToCode.target.fetch

Dán lệnh curl, nhận ngay mã nguồn yêu cầu HTTP chạy được cho 11 ngôn ngữ trong tích tắc.

Đề xuất Liên quan

Trường hợp sử dụng

  • Trong bảng Network của Chrome DevTools, nhấp chuột phải vào yêu cầu chọn「Copy as cURL」, sau đó dán vào công cụ này để chuyển đổi trực tiếp thành mã nguồn ngôn ngữ mà dự án sử dụng, nhanh hơn viết yêu cầu thủ công 10 lần
  • Khi gọi API bên thứ ba, tài liệu cung cấp ví dụ curl, nhanh chóng chuyển thành mã Python requests/Java OkHttp/C# HttpClient để nhúng vào dự án
  • Khi debug giao tiếp môi trường production, sao chép lệnh curl từ công cụ bắt gói tin (Charles/mitmproxy/Wireshark), chuyển thành mã unit test để kiểm tra trực tiếp
  • Khi viết tài liệu API, nhanh chóng chuyển đổi giữa các ví dụ đa ngôn ngữ, cung cấp mã ví dụ chạy được cho độc giả ở các tech stack khác nhau
  • Khi khắc phục sự cố yêu cầu trực tuyến, sử dụng curl tái hiện vấn đề rồi chuyển đổi thành dạng mã nguồn gửi cho đồng nghiệp hoặc tạo Issue, thuận tiện cho người khác tái hiện trực tiếp
  • Khi phát triển đa ngôn ngữ (ví dụ chuyển từ Python sang dự án Go), nhanh chóng chuyển đổi yêu cầu curl hiện có thành mã lời gọi HTTP client ngôn ngữ mới, tiết kiệm thời gian tra cứu tài liệu
  • Trong script Shell, chuyển đổi lệnh curl thành PowerShell Invoke-RestMethod cho đồng nghiệp vận hành Windows, hoặc chuyển đổi ngược lại
  • Học giao thức HTTP: Bằng cách so sánh mã nguồn thực hiện cùng một yêu cầu ở các ngôn ngữ khác nhau, hiểu sự khác biệt API của các thư viện HTTP client
  • Nhanh chóng chuyển đổi curl -X POST -d 'json' thành mã nguồn có Content-Type và JSON serialization chính xác, tránh lỗi từ việc nối chuỗi thủ công
  • Khi cần gọi API trong script CI/CD, chuyển đổi lệnh curl đã debug cục bộ thành mã ngôn ngữ script tương ứng để nhúng vào pipeline

Tính năng

  • 11 ngôn ngữ/thư viện mục tiêu: Bao phủ frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), dòng lệnh (wget), đầy đủ các tech stack phổ biến
  • Phân tích lệnh curl thông minh: Tự động nhận dạng URL, HTTP method, tiêu đề, nội dung yêu cầu, hỗ trợ dấu nháy đơn/kép, thoát ký tự bằng dấu gạch chéo ngược, nối lệnh nhiều dòng (dấu gạch chéo ngược xuống dòng)
  • Hỗ trợ đầy đủ tham số curl phổ biến: -X/--request chỉ định method, -H/--header tiêu đề, -d/--data/-F nội dung form/JSON, -u/--user Basic Auth, -A/--user-agent UA, -b/--cookie Cookie, -e/--referer Referer, -L/--location theo dõi chuyển hướng, --compressed giải nén tự động, -k/--insecure bỏ qua xác minh chứng chỉ, -I/--head yêu cầu HEAD
  • Nhận dạng nội dung JSON thông minh: Khi phát hiện Content-Type là application/json, tự động sử dụng JSON.parse/JSON.stringify/requests(json=)/json= để tuần tự hóa, mã nguồn tạo ra sử dụng đối tượng trực tiếp thay vì chuỗi, phù hợp với quy ước của từng ngôn ngữ
  • Chuyển đổi Basic Auth tự động: Khi nhận dạng -u user:pass, tự động tạo tiêu đề Authorization: Basic <base64>, sử dụng cơ chế auth gốc của ngôn ngữ đích (Python auth=, OkHttp credentials, C# credentials, v.v.)
  • Huy hiệu cờ bảo mật: Tự động phát hiện các tham số --compressed/-L/-k/-u, hiển thị bằng huy hiệu nổi bật trong kết quả phân tích
  • Có thể chuyển đổi phương thức HTTP thủ công: Sau khi phân tích method của curl, cho phép người dùng chuyển đổi method thủ công trong hộp thả xuống (7 loại như GET/POST/PUT) và xem mã nguồn tương ứng ngay lập tức
  • Thoát chuỗi an toàn: Khi tạo mã nguồn cho từng ngôn ngữ, sử dụng chuỗi ký tự gốc của ngôn ngữ đó (Python dấu nháy ba/dấu gạch chéo ngược, Go dấu backtick chuỗi thô, C# @"", PHP dấu nháy đơn, Java thoát dấu nháy kép) để tránh lỗi cú pháp khi chạy mã
  • Cảnh báo lỗi phân tích: Khi nhập lệnh curl không hợp lệ (như thiếu URL, không bắt đầu bằng curl, POST không có body, v.v.), hiển thị huy hiệu cảnh báo màu cam kèm chi tiết vấn đề
  • Tải 3 ví dụ một cú nhấp: Cung cấp 3 ví dụ điển hình: GET+Token Auth, POST+JSON, Basic Auth+theo dõi chuyển hướng, nhanh chóng xem khả năng của công cụ
  • Xóa nội dung một cú nhấp: Nút Clear reset nhanh chóng, dán lệnh mới không còn dữ liệu cũ
  • Xử lý hoàn toàn cục bộ: Lệnh curl và nội dung yêu cầu được phân tích và chuyển đổi hoàn toàn trong trình duyệt cục bộ, không tải lên máy chủ nào, Token/mật khẩu nhạy cảm không bị rò rỉ
  • Sao chép mã một cú nhấp: Sau khi tạo mã, nhấp nút Copy để sao chép vào bảng tạm, dán vào dự án là có thể chạy ngay
  • Hỗ trợ chế độ HTTPS không an toàn: Tham số -k/--insecure tạo cấu hình bỏ qua xác minh chứng chỉ TLS tương ứng trong từng ngôn ngữ như Node/Go/Python/PHP/C#/PowerShell (wget dùng --no-check-certificate, C# để lại gợi ý ServicePointManager, Node đặt NODE_TLS_REJECT_UNAUTHORIZED)

Cách Sử dụng

  1. Lấy lệnh curl: Trong bảng DevTools Network của trình duyệt, nhấp chuột phải vào yêu cầu → Copy → Copy as cURL (bash); hoặc xuất cURL từ công cụ bắt gói tin như Postman/Charles/mitmproxy; hoặc tự viết lệnh curl
  2. Dán vào ô nhập liệu: Dán lệnh curl vào khu vực nhập liệu phía trên, hỗ trợ lệnh một dòng/nhiều dòng (dấu gạch chéo ngược xuống dòng), tự động loại bỏ xuống dòng
  3. Nhấp nút ví dụ để tham khảo: Nếu không quen với định dạng, có thể nhấp「Ví dụ 1/2/3」để tải lệnh curl cài sẵn và xem kết quả
  4. Xem kết quả phân tích: Khu vực kết quả phân tích sẽ hiển thị URL, số lượng Header, số ký tự của Body, cùng các huy hiệu như nén/chuyển hướng/bỏ qua chứng chỉ/Basic Auth, nếu có vấn đề sẽ hiển thị cảnh báo màu cam
  5. Điều chỉnh method nếu cần: Nếu method được nhận dạng tự động không chính xác (ví dụ curl không thêm -X POST nhưng đáng lẽ là POST), hãy chuyển đổi HTTP method thủ công trong hộp thả xuống
  6. Chọn ngôn ngữ đích: Trong khu vực mã đích, nhấp nút ngôn ngữ tương ứng (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget, v.v.)
  7. Sao chép mã: Nhấp nút「Sao chép mã」, dán vào dự án/terminal của bạn là có thể chạy

Câu hỏi Thường gặp

Công cụ chuyển đổi cURL sang mã nguồn có ích gì?Tại sao không dùng trực tiếp lệnh curl?

Việc gọi trực tiếp lệnh curl trong mã (như shell_exec, subprocess.run) cần khởi động tiến trình con, vừa không an toàn vừa khó xử lý lỗi, lấy tiêu đề phản hồi, chuyển đổi kiểu. Mã production nên sử dụng HTTP client gốc của ngôn ngữ lập trình (Python requests, Java OkHttp, JS fetch, v.v.). Giá trị của curl-to-code là tự động dịch lệnh curl bạn sao chép từ DevTools/công cụ bắt gói tin thành mã HTTP client của ngôn ngữ tương ứng, tiết kiệm công việc cơ khí như tra tài liệu API, thoát dấu nháy thủ công, xử lý JSON/xác thực, v.v., chỉ cần sao chép dán là có thể chạy.

Hỗ trợ những ngôn ngữ/thư viện đích nào?

Hiện tại hỗ trợ 11 mục tiêu: JavaScript fetch (gốc trình duyệt), Axios (thư viện HTTP đa năng Node/trình duyệt), Node.js node-fetch, Python requests (thư viện HTTP phổ biến nhất của Python), Python httpx (thư viện HTTP thế hệ mới hỗ trợ HTTP/2 và bất đồng bộ), Go net/http (thư viện chuẩn của Go), tiện ích mở rộng PHP cURL, Java OkHttp (thư viện hiệu năng cao đa năng Android/backend), C# HttpClient (HTTP client chuẩn .NET), PowerShell Invoke-RestMethod (thường dùng trong script tự động hóa Windows), wget (công cụ tải xuống dòng lệnh). Nếu ngôn ngữ bạn cần không có trong danh sách (như Ruby, Rust reqwest, Dart http, Swift URLSession, v.v.), có thể phản hồi tại trang, chúng tôi sẽ xem xét bổ sung theo nhu cầu.

Làm sao để sao chép lệnh curl từ Chrome DevTools?

Các bước: 1. Mở Chrome/Edge, nhấn F12 để mở DevTools; 2. Chuyển sang bảng Network; 3. Làm mới trang hoặc kích hoạt yêu cầu đích; 4. Tìm yêu cầu đích trong danh sách yêu cầu (có thể lọc bằng XHR/JS); 5. Nhấp chuột phải vào yêu cầu đó → Copy → chọn「Copy as cURL (bash)」(khuyến nghị phiên bản bash, tương thích tốt nhất); 6. Dán vào ô nhập liệu của công cụ này. Cẩn thận đừng chọn Copy as fetch (đó là mã JS không phải curl). Thao tác trên Firefox/Safari tương tự, đều có tùy chọn Copy as cURL.

Xử lý dấu nháy trong lệnh curl rất phức tạp, hỗ trợ định dạng nào?

Công cụ hỗ trợ dấu nháy đơn, dấu nháy kép, thoát bằng dấu gạch chéo ngược trong định dạng bash; dấu nháy kép+thoát ^ của Windows cmd; thoát bằng dấu backtick của PowerShell đều có thể nhận dạng gần như toàn bộ. Khuyến nghị sử dụng định dạng bash (bọc bằng dấu nháy đơn). Lệnh nhiều dòng (dấu gạch chéo ngược \ tiếp dòng) cũng hỗ trợ dán, công cụ tự động loại bỏ xuống dòng và ký tự tiếp dòng. Nếu lệnh curl của bạn đặc biệt phức tạp (chứa biến shell, thay thế lệnh $(...), ống |, v.v.), khuyến nghị chạy lệnh echo trong terminal để in curl thực tế sau khi mở rộng rồi mới sao chép, hoặc tự đơn giản hóa trước (thay thế biến bằng giá trị thực).

Tại sao khi dùng -d gửi JSON trong curl, máy chủ lại nhận được dữ liệu lộn xộn/400?

Đây là một trong những lỗi curl phổ biến nhất. Tùy chọn -d/--data của curl có Content-Type mặc định là application/x-www-form-urlencoded (định dạng form), không phải application/json. Nếu bạn trực tiếp dùng curl -d '{"name":"demo"}' url, máy chủ sẽ phân tích theo form (phân tích thất bại hoặc nhận được dữ liệu rỗng). Phải thêm rõ ràng tiêu đề -H "Content-Type: application/json" mới có thể gửi JSON chính xác. Công cụ này sẽ đưa ra cảnh báo màu cam khi phát hiện có body nhưng không có Content-Type.

Mã tạo ra có thể sao chép chạy trực tiếp không?Cần cài đặt dependency gì?

Mã của hầu hết các ngôn ngữ có thể chạy trực tiếp bằng thư viện chuẩn (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget đều có sẵn), không cần cài đặt thêm. Các ngôn ngữ khác cần thư viện bên thứ ba: Axios (cần npm install axios), node-fetch (cần npm install node-fetch, Node 18+ đã tích hợp fetch không cần cài đặt), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (cần thêm dependency okhttp3 bằng Maven/Gradle). Mã mặc định in mã trạng thái và văn bản phản hồi, bạn có thể sửa đổi logic xử lý tùy ý.

Có hỗ trợ tải tệp lên multipart/form-data (tham số -F) không?

Hỗ trợ cơ bản: Tham số -F sẽ được nhận dạng là nội dung yêu cầu (body), nhưng mã tạo ra hiện tại xử lý @file dưới dạng chuỗi ký tự chứ không phải tải tệp thực sự. Tải tệp lên cần đọc nội dung tệp cục bộ, cách xử lý của từng ngôn ngữ khác nhau nhiều (JS dùng FormData/FormData.append, Python dùng tham số files=, Go dùng multipart.Writer). Khuyến nghị tham khảo tài liệu tải tệp của thư viện tương ứng để điều chỉnh trên cơ sở mã do công cụ tạo ra. Phiên bản sau sẽ tăng cường hỗ trợ multipart.

Có tải lên lệnh curl và dữ liệu nhạy cảm của tôi không?

Hoàn toàn không. Toàn bộ quá trình phân tích và tạo mã hoàn tất 100% trong trình duyệt cục bộ của bạn (JavaScript thuần phía frontend), lệnh curl, Token/Cookie/mật khẩu trong tiêu đề yêu cầu, dữ liệu trong nội dung yêu cầu sẽ không được gửi đến bất kỳ máy chủ nào. Bạn có thể ngắt mạng để sử dụng công cụ này, không cần lo lắng về rò rỉ thông tin nhạy cảm.

Xử lý -k/--insecure bỏ qua xác minh chứng chỉ trong mã các ngôn ngữ như thế nào?

Khi phát hiện tham số -k, công cụ này sẽ tạo cấu hình bỏ qua xác minh chứng chỉ tương ứng cho từng ngôn ngữ đích: Python requests/httpx dùng verify=False; Node.js đặt process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go tạo tùy chỉnh tls.Config{InsecureSkipVerify: true}; PHP đặt CURLOPT_SSL_VERIFYPEER=false và CURLOPT_SSL_VERIFYHOST=0; Java OkHttp cần tùy chỉnh TrustManager (có chú thích cảnh báo trong mã, vì mã khá dài); C# có thể tùy chỉnh ServerCertificateCustomValidationCallback; PowerShell dùng -SkipCertificateCheck (PS6+); wget dùng --no-check-certificate; fetch trình duyệt không thể bỏ qua chứng chỉ (hạn chế bảo mật trình duyệt, có chú thích giải thích trong mã). Lưu ý: Các cấu hình này chỉ dành cho kiểm thử phát triển cục bộ, tuyệt đối không vô hiệu hóa xác minh chứng chỉ trong môi trường production.

Tại sao mã Go tạo ra không theo dõi chuyển hướng?Đã thêm -L thì đáng lẽ phải theo dõi chứ?

Hành vi mặc định của net/http của Go là không theo dõi chuyển hướng (phù hợp với hành vi mặc định của curl, tức curl phải thêm -L rõ ràng mới theo dõi). Khi công cụ phát hiện tham số -L sẽ tạo client rỗng (http.Client{} có CheckRedirect mặc định là nil, tức theo dõi 10 lần chuyển hướng); nếu không thêm -L sẽ tạo client mà CheckRedirect trả về http.ErrUseLastResponse, tức không theo dõi chuyển hướng (phù hợp với hành vi khi curl không thêm -L). Nếu bạn muốn Go luôn theo dõi chuyển hướng, có thể trực tiếp sử dụng http.DefaultClient hoặc tự tùy chỉnh Client{Timeout: ...} trong mã.

Làm sao để xử lý yêu cầu cần đăng nhập/có Cookie?

Có hai cách: ①Sao chép curl trực tiếp từ DevTools của trình duyệt đã đăng nhập (khuyến nghị): Nhấp chuột phải vào yêu cầu→Copy as cURL, cách này cookie/header sẽ tự động bao gồm, dán và chuyển đổi là có thể chạy trực tiếp; ②Chỉ định giá trị Cookie thủ công trong curl bằng -b/--cookie (-b 'sessionid=abc; token=xyz'), chỉ định Basic Auth bằng -u/--user, chỉ định Bearer Token bằng -H "Authorization: Bearer xxx", công cụ sẽ chuyển đổi các tiêu đề này nguyên trạng. Lưu ý: Cookie sao chép từ trình duyệt có thời hiệu, có thể hết hạn sau vài giờ và cần sao chép lại.

Tại sao nội dung JSON trong Python requests lại dùng tham số json= thay vì data=?

Tham số data của thư viện Python requests sẽ mã hóa dict theo application/x-www-form-urlencoded, gửi chuỗi nguyên trạng, trong khi tham số json sẽ tự động tuần tự hóa dict/danh sách thành chuỗi JSON, và tự động đặt tiêu đề Content-Type: application/json (nếu bạn không tự đặt). Khi công cụ này phát hiện Content-Type chứa application/json và body là JSON hợp lệ, sẽ tự động phân tích JSON thành Python dict và sử dụng tham số json=, giúp mã ngắn gọn hơn, không cần json.dumps thủ công, và không quên tiêu đề Content-Type. Body không phải JSON (form/XML/văn bản thuần) sử dụng tham số data= để gửi chuỗi gốc.

Lệnh curl dài và nhiều tiêu đề, phải làm sao khi mã tạo ra mang theo tất cả tiêu đề?

Lệnh curl sao chép từ DevTools sẽ chứa rất nhiều tiêu đề mà trình duyệt tự động thêm (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests, v.v.), hầu hết các tiêu đề này trong mã không cần đặt rõ ràng (HTTP client sẽ tự động thêm giá trị mặc định hợp lý, như Accept-Encoding, Connection, Host, Content-Length, v.v.). Khuyến nghị sau khi sao chép mã tạo ra, tự động xóa các tiêu đề không cần thiết, giữ lại ít nhất: Content-Type, Authorization, Cookie (nếu cần), tiêu đề nghiệp vụ tùy chỉnh. Tiêu đề thừa không chỉ làm mã trông rối mà còn có thể gây hành vi bất thường (ví dụ đặt Accept-Encoding rõ ràng nhưng client sẽ không giải nén tự động).

Có hỗ trợ tham số HTTPS proxy (-x/--proxy) không?

Hiện tại tham số HTTP proxy (-x/--proxy) chưa được chuyển đổi tự động. Cấu hình proxy trong từng ngôn ngữ khác nhau nhiều (JS fetch không có hỗ trợ proxy gốc cần Agent, Python dùng tham số proxies=, Go thông qua Transport.Proxy, PHP dùng CURLOPT_PROXY, C# dùng WebProxy, Java dùng OkHttpClient.Builder().proxy()). Tiêu đề proxy (xác thực của chính proxy) cũng cần xử lý riêng. Các tham số liên quan đến proxy trong phiên bản hiện tại sẽ bị bỏ qua, bạn có thể tự thêm cấu hình proxy trên cơ sở mã tạo ra, phiên bản sau sẽ tăng cường hỗ trợ proxy.

So với các công cụ trực tuyến như curlconverter.com thì khác biệt gì?

So với các công cụ nổi tiếng như curlconverter.com, ưu điểm của curl-to-code của GeekFormat là: ①Xử lý hoàn toàn cục bộ (logic xử lý của curlconverter ở phía máy chủ hoặc client), không tải lên dữ liệu nên an toàn hơn; ②Giao diện và giải thích tiếng Việt, thân thiện với nhà phát triển Việt Nam; ③Mã tạo ra phù hợp với sử dụng thực tế production hơn (ví dụ Python requests dùng tham số json= cho JSON body thay vì data=, hành vi mặc định của Go phù hợp với curl, C# xử lý Content-Type chính xác không hardcode application/json); ④Kèm tài liệu chuyên sâu, FAQ, bảng đối chiếu, khắc phục sự cố, không chỉ tạo mã mà còn giúp bạn hiểu tại sao viết như vậy; ⑤Miễn phí không quảng cáo, không cần đăng nhập, không cần yêu cầu mạng nào cũng có thể sử dụng.

术语表

cURL / curl
Công cụ dòng lệnh mã nguồn mở và thư viện libcurl, dùng để gửi yêu cầu giao thức HTTP/HTTPS/FTP v.v. qua URL trên dòng lệnh, là công cụ nhà phát triển dùng phổ biến nhất để debug API.
HTTP method
Hành động của yêu cầu HTTP, phổ biến gồm GET (đọc), POST (tạo), PUT (cập nhật toàn bộ), PATCH (cập nhật một phần), DELETE (xóa), HEAD (lấy tiêu đề), OPTIONS (truy vấn khả năng máy chủ).
Tiêu đề yêu cầu (Header)
Cặp khóa-giá trị siêu dữ liệu trong yêu cầu HTTP, như Content-Type, Authorization, User-Agent, Cookie, Accept, v.v., được chỉ định trong curl bằng -H/--header.
Nội dung yêu cầu (Body)
Phần dữ liệu của yêu cầu HTTP, thường dùng trong POST/PUT/PATCH, được chỉ định trong curl bằng -d/--data/--data-binary/-F, các định dạng phổ biến gồm JSON, form-urlencoded, multipart/form-data.
Content-Type
Tiêu đề yêu cầu/phản hồi, chỉ định loại media của body. application/json nghĩa là JSON, application/x-www-form-urlencoded nghĩa là form mã hóa URL, multipart/form-data nghĩa là form tải tệp lên.
Basic Auth
Xác thực cơ bản HTTP, truyền tên người dùng và mật khẩu qua tiêu đề Authorization: Basic base64(user:pass), được chỉ định trong curl bằng -u user:pass.
Bearer Token
Phương thức xác thực dựa trên token, truyền qua tiêu đề Authorization: Bearer <token>, thường dùng trong JWT/OAuth2.
User-Agent
Tiêu đề yêu cầu, xác định loại client (trình duyệt/crawler/script), curl mặc định gửi "curl/phiên bản", nhiều trang web chặn UA không phải trình duyệt, thường dùng -A để chỉ định.
Cookie
Cặp khóa-giá trị mà máy chủ gửi xuống qua Set-Cookie và trình duyệt gửi lại qua tiêu đề Cookie trong các yêu cầu sau, dùng để duy trì phiên làm việc. curl -b gửi Cookie, -c lưu Cookie.
Referer
Tiêu đề yêu cầu, cho biết URL của trang nguồn của yêu cầu hiện tại, một số kiểm tra chống liên kết trực tiếp/CSRF sẽ kiểm tra. Đặt bằng curl -e.
Chuyển hướng (3xx)
Khi máy chủ trả về mã trạng thái 301/302/303/307/308, báo trình duyệt chuyển hướng đến URL mới. curl không theo dõi mặc định, thêm -L/--location để theo dõi.
--compressed
Tùy chọn curl, tự động thêm tiêu đề Accept-Encoding: deflate, gzip và tự động giải nén phản hồi. Nếu không đặt, phản hồi có thể là dữ liệu nén không đọc được.
-k/--insecure
Tùy chọn curl, bỏ qua xác minh chứng chỉ HTTPS, chỉ dùng cho môi trường kiểm thử chứng chỉ tự ký, cấm sử dụng trong môi trường production.
fetch API
API yêu cầu HTTP JavaScript gốc của trình duyệt, trả về Promise, được hỗ trợ trên tất cả trình duyệt hiện đại.
Axios
Thư viện HTTP client phổ biến dựa trên Promise, dùng chung cho trình duyệt và Node.js, tự động tuần tự hóa JSON, interceptor, hủy timeout.
OkHttp
Thư viện HTTP client Java/Android của công ty Square, hiệu năng cao, hỗ trợ HTTP/2, kết nối nối, GZIP trong suốt.
HttpClient (.NET)
HTTP client được khuyến nghị cho C#/.NET, trong không gian tên System.Net.Http, là API chuẩn của .NET Core/.NET 5+.
Invoke-RestMethod
Cmdlet yêu cầu HTTP tích hợp sẵn trong PowerShell 3.0+, tự động phân tích phản hồi JSON/XML thành đối tượng PowerShell.

Bảng đối chiếu tùy chọn curl phổ biến với 11 ngôn ngữ đích

Giá trị Content-Type phổ biến và cách dùng curl

So sánh ba định dạng Copy as cURL của Chrome DevTools

Troubleshooting