Tukar arahan curl kepada kod Ruby - Jana kod Ruby Net::HTTP sedia untuk digunakan untuk permintaan API
# Ruby Net::HTTP code will appear here # Example: require 'net/http' require 'uri' require 'json' uri = URI.parse('https://api.example.com/data') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' request = Net::HTTP::Post.new(uri.path) request['Content-Type'] = 'application/json' request.body = JSON.dump({name: 'test'}) response = http.request(request) puts response.code puts response.body
Berikut adalah beberapa arahan curl biasa yang boleh anda tukar kepada kod Ruby:
curl https://api.example.com/users
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","email":"[email protected]"}' https://api.example.com/users
curl -X PUT -H "Authorization: Bearer token123" -d '{"status":"active"}' https://api.example.com/users/1
curl -X DELETE https://api.example.com/users/1
curl -H "X-API-Key: abc123" -H "Accept: application/json" https://api.example.com/data
Pustaka Ruby Net::HTTP adalah cara yang berkuasa untuk membuat permintaan HTTP. Berikut adalah beberapa corak Ruby Net::HTTP yang biasa:
require 'net/http' require 'uri' uri = URI.parse('https://api.example.com/upload') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' request = Net::HTTP::Post.new(uri.path) request['Authorization'] = 'Bearer YOUR_TOKEN_HERE' # Create multipart form data boundary = "AaB03x" post_body = [] post_body << "--#{boundary}\r\n" post_body << "Content-Disposition: form-data; name=\"file\"; filename=\"document.pdf\"\r\n" post_body << "Content-Type: application/pdf\r\n\r\n" post_body << File.read('document.pdf') post_body << "\r\n--#{boundary}--\r\n" request['Content-Type'] = "multipart/form-data; boundary=#{boundary}" request.body = post_body.join response = http.request(request) puts response.body
require 'net/http' require 'uri' require 'json' uri = URI.parse('https://api.example.com/data') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == 'https' http.open_timeout = 5 # seconds http.read_timeout = 5 # seconds begin request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) case response when Net::HTTPSuccess data = JSON.parse(response.body) puts data else puts "Error: #{response.code} - #{response.message}" end rescue Net::OpenTimeout puts "Connection timed out" rescue Net::ReadTimeout puts "Response timed out" rescue StandardError => e puts "Error making request: #{e.message}" end
Salin arahan curl anda → Tampal ke dalam kotak input → Dapatkan kod Ruby Net::HTTP yang ditukar
Penukar kami menyokong arahan curl kompleks dan menterjemahkannya kepada kod Ruby yang bersih dan cekap menggunakan pustaka Net::HTTP
Alat kami mengendalikan pilihan curl biasa ini dan menukarkannya kepada kod Ruby Net::HTTP yang sesuai:
J: Kod Ruby Net::HTTP yang dihasilkan serasi dengan Ruby 2.0 dan ke atas. Untuk versi Ruby yang lebih lama, penyesuaian kecil mungkin diperlukan.
J: Kod asas yang dihasilkan tidak termasuk pengendalian ralat yang luas. Untuk kod produksi, anda harus menambah blok begin/rescue untuk mengendalikan pengecualian yang mungkin seperti Net::HTTPError atau isu sambungan.
J: Untuk respons JSON, gunakan JSON.parse(response.body) untuk mengurai respons ke dalam hash Ruby. Untuk format lain, anda boleh menggunakan response.body untuk kandungan mentah.
J: Pustaka Net::HTTP adalah sebahagian daripada pustaka standard Ruby, jadi tiada gems tambahan diperlukan untuk permintaan HTTP asas. Untuk pengendalian JSON, gem 'json' disertakan dalam pustaka standard sejak Ruby 1.9.
J: Untuk muat naik fail dalam Ruby, anda perlu menggunakan data borang multipart dengan Net::HTTP. Penukar kami mengendalikan arahan curl dengan pilihan -F
atau --form
dan menjana kod Ruby yang sesuai.
J: Pustaka Ruby Net::HTTP menyediakan pengendalian kuki melalui balang HTTP::Cookie. Apabila anda menukar arahan curl yang termasuk pengendalian kuki (menggunakan -b
atau --cookie
), alat kami menjana kod Ruby yang menguruskan kuki dengan betul.
J: Walaupun curl sangat baik untuk ujian API baris arahan yang cepat, Ruby Net::HTTP menyediakan pendekatan programatik yang berintegrasi dengan aplikasi Ruby anda. Menukar curl kepada Ruby membantu merapatkan jurang antara ujian dan pelaksanaan dalam pembangunan Ruby.
Memahami arahan curl adalah penting untuk ujian API yang berkesan dengan Ruby. Berikut adalah rujukan pantas pilihan curl biasa yang disokong oleh penukar kami:
curl [options] [URL]
-X, --request METHOD
: Specify request method (GET, POST, PUT, DELETE, etc.)-H, --header LINE
: Add header to the request-d, --data DATA
: Send data in POST request-F, --form CONTENT
: Submit form data-u, --user USER:PASSWORD
: Server user and password-k, --insecure
: Allow insecure server connections-I, --head
: Show document info only-v, --verbose
: Make the operation more verbose-s, --silent
: Silent mode--connect-timeout SECONDS
: Maximum time for connectionPenukar Ruby kami mengendalikan arahan curl kompleks termasuk pelbagai pengepala, pengesahan, muatan data, dan pelbagai pilihan. Hanya tampal arahan curl anda dan dapatkan kod Ruby yang bersih dan moden menggunakan pustaka Net::HTTP.
Apabila bekerja dengan pustaka Ruby Net::HTTP, ikuti amalan terbaik ini untuk interaksi API yang cekap dan selamat:
require 'net/http' require 'uri' uri = URI.parse('https://api.example.com') Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| # First request request1 = Net::HTTP::Get.new('/users') response1 = http.request(request1) # Second request (uses same connection) request2 = Net::HTTP::Get.new('/products') response2 = http.request(request2) end
require 'net/http' require 'uri' uri = URI.parse('https://api.example.com/data') begin response = Net::HTTP.get_response(uri) case response when Net::HTTPSuccess puts "Success: #{response.body}" when Net::HTTPRedirection puts "Redirection to: #{response['location']}" when Net::HTTPClientError puts "Client error: #{response.code} - #{response.message}" when Net::HTTPServerError puts "Server error: #{response.code} - #{response.message}" else puts "Unknown response: #{response.code} - #{response.message}" end rescue SocketError => e puts "Connection error: #{e.message}" rescue Timeout::Error puts "Connection timed out" rescue StandardError => e puts "Error: #{e.message}" end
require 'net/http' require 'uri' require 'json' uri = URI.parse('https://api.example.com/data') response = Net::HTTP.get_response(uri) begin data = JSON.parse(response.body) puts data['name'] rescue JSON::ParserError => e puts "Invalid JSON response: #{e.message}" end