Chuyển đổi curl sang Elixir
Chuyển đổi các lệnh curl thành mã Elixir bằng HTTPoison. 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ư. Đối với Ruby, hãy thử trình chuyển đổi curl sang Ruby của chúng tôi. Đối với Go, hãy xem curl sang Go. Dưới đây là các ví dụ Elixir 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
Elixir HTTPoison là gì?
HTTPoison là client HTTP phổ biến nhất cho Elixir, được xây dựng trên thư viện hackney của Erlang. Nó cung cấp một API chức năng (functional API) sạch sẽ cho GET, POST, streaming và các yêu cầu bất đồng bộ. Thêm vào deps trong mix.exs: {:httpoison, "~> 2.0"}. curl2code sử dụng HTTPoison làm mặc định cho các chuyển đổi Elixir.
HTTPoison so với Req so với Tesla so với Finch — nên sử dụng cái nào?
HTTPoison là thư viện lâu đời và được sử dụng rộng rãi nhất. Req mới hơn, bao gồm sẵn các tính năng như thử lại và xác thực. Tesla cung cấp kiến trúc middleware giống như Faraday. Finch ở cấp độ thấp, hiệu suất cao cho mục đích sử dụng production. Đối với các phương pháp chức năng tương tự, hãy xem curl sang Clojure hoặc curl sang Ruby.
Làm thế nào để xử lý xác thực trong Elixir?
Truyền các header dưới dạng danh sách các tuple chuỗi: HTTPoison.get(url, [{"Authorization", "Bearer token"}]). Đối với xác thực Basic, mã hóa user:pass bằng Base.encode64/1 và thêm "Basic " vào đầu giá trị. Khớp mẫu phản hồi cho {:ok, response} hoặc {:error, reason}. curl2code chuyển đổi các cờ -H và -u sang Elixir theo phong cách chuẩn.
Làm thế nào để gửi dữ liệu form multipart trong Elixir?
Sử dụng {:multipart, parts} làm thân yêu cầu: HTTPoison.post(url, {:multipart, [{:file, path, {"form-data", [{"name", "file"}, {"filename", "doc.pdf"}]}, []}]}). Đối với các trường form đơn giản, hãy thêm các tuple {"key", "value"}. curl2code xử lý các cờ -F cho multipart HTTPoison.
Làm thế nào để xử lý lỗi trong các yêu cầu HTTP Elixir?
HTTPoison trả về các tuple được gắn thẻ (tagged tuples): {:ok, response} hoặc {:error, reason}. Khớp mẫu với case hoặc with: case HTTPoison.get(url) do {:ok, %{status_code: 200}'} -> ... ; {:error, %{reason: reason}'} -> ... end. Đây là cách làm đặc trưng của Elixir — xử lý lỗi rõ ràng, triệt để mà không cần ngoại lệ.
Làm thế nào để thực hiện các yêu cầu HTTP đồng thời trong Elixir?
Sử dụng Task.async/1 và Task.await/1: tasks = urls |> Enum.map(&Task.async(fn -> HTTPoison.get(&1) end)) sau đó results = tasks |> Enum.map(&Task.await/1). BEAM VM của Elixir xử lý hàng ngàn tiến trình đồng thời một cách hiệu quả. Đối với tính đồng thời tương tự, hãy xem curl sang Go.
Làm thế nào để thiết lập timeout trong Elixir?
Truyền các tùy chọn cho HTTPoison: HTTPoison.get(url, [], [timeout: 30_000, recv_timeout: 30_000]). timeout là timeout kết nối, recv_timeout là timeout phản hồi (cả hai tính bằng mili giây). Để thử lại, hãy bọc trong một hàm đệ quy với số lần thử giảm dần hoặc sử dụng tính năng thử lại tích hợp sẵn của thư viện Req.
Làm thế nào để sử dụng proxy trong Elixir?
Truyền tùy chọn proxy cho HTTPoison: HTTPoison.get(url, [], [proxy: {"proxy.host", 8080}]). Đối với các proxy có xác thực, hãy sử dụng proxy_auth: {"user", "pass"}. HTTPoison cũng hỗ trợ proxy SOCKS5 thông qua thư viện hackney cơ sở. curl2code chuyển đổi các cờ -x sang cấu hình proxy Elixir.
Làm thế nào để gửi một yêu cầu POST với thân JSON trong Elixir?
Chuyển đổi một lệnh curl POST như curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL sang Elixir bằng cách sử dụng curl2code. Mã được tạo sử dụng HTTPoison.post(url, Jason.encode!(body), [{'Content-Type', 'application/json'}]). 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ã HTTPoison.
Làm thế nào để thêm xác thực Bearer token trong Elixir?
Cung cấp curl -H "Authorization: Bearer YOUR_TOKEN" URL cho curl2code và nó sẽ tạo mã HTTPoison với header xác thực: [{'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 Elixir?
curl2code chuyển đổi curl -H "Content-Type: application/json" URL sang mã HTTPoison với header chính xác: [{'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 HTTPoison API chính xác.