مبدل Curl به Ruby

تبدیل دستورات curl به کد Ruby - تولید کد Ruby Net::HTTP آماده استفاده برای درخواست‌های API

اطلاعیه حریم خصوصی: این ابزار حرفه‌ای تبدیل امن به کد Ruby را با حفاظت حریم خصوصی سطح سازمانی فراهم می‌کند. ما هیچ داده‌ای که ارسال می‌کنید را ذخیره نمی‌کنیم و محرمانگی کامل را برای کار توسعه API شما تضمین می‌کنیم.

ژنراتور کد Ruby Net::HTTP

# 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

دستورات curl رایج برای تست API در Ruby

در اینجا برخی دستورات curl رایج که می‌توانید به کد Ruby تبدیل کنید آمده است:

نمونه‌های Ruby Net::HTTP

کتابخانه Net::HTTP در Ruby روشی قدرتمند برای ارسال درخواست‌های HTTP است. در اینجا برخی الگوهای رایج Ruby Net::HTTP آمده است:

آپلود فایل با Ruby Net::HTTP

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

Ruby Net::HTTP with Timeout and Error Handling

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

نحوه استفاده از مبدل Ruby Net::HTTP

۱. استفاده پایه

دستور curl خود را کپی کنید → در کادر ورودی جایگذاری کنید → کد Ruby Net::HTTP تبدیل شده را دریافت کنید

۲. ویژگی‌های Ruby Net::HTTP

  • HTTP methods (GET, POST, PUT, DELETE, etc.)
  • Request headers in Ruby format
  • JSON and form data handling
  • Basic and token authentication
  • SSL verification options
  • Session handling with Ruby Net::HTTP

۳. استفاده پیشرفته از Ruby Net::HTTP

مبدل ما دستورات پیچیده curl را پشتیبانی می‌کند و آنها را به کد Ruby تمیز و کارآمد با استفاده از کتابخانه Net::HTTP ترجمه می‌کند

۴. تبدیل گزینه‌های curl به Ruby

ابزار ما این گزینه‌های رایج curl را پشتیبانی می‌کند و آنها را به کد Ruby Net::HTTP مناسب تبدیل می‌کند:

  • -X, --request: Sets the HTTP method (GET, POST, PUT, etc.)
  • -H, --header: Adds HTTP headers to the request
  • -d, --data: Sends data in the request body
  • --data-binary: Sends binary data in the request body
  • -u, --user: Adds basic authentication
  • -k, --insecure: Disables SSL certificate verification
  • --connect-timeout: Sets connection timeout

سؤالات متداول درباره Ruby Net::HTTP

س: چه نسخه‌ای از Ruby برای کد تولید شده مورد نیاز است؟

ج: کد Ruby Net::HTTP تولید شده با Ruby 2.0 و بالاتر سازگار است. برای نسخه‌های قدیمی‌تر Ruby، ممکن است تنظیمات جزئی مورد نیاز باشد.

س: آیا کد Ruby بررسی خطا را انجام می‌دهد؟

ج: کد پایه تولید شده شامل مدیریت خطای گسترده نیست. برای کد تولیدی، باید بلوک‌های begin/rescue را برای مدیریت استثناهای احتمالی مانند Net::HTTPError یا مشکلات اتصال اضافه کنید.

س: چگونه می‌توانم پاسخ را در Ruby پردازش کنم؟

ج: برای پاسخ‌های JSON، از JSON.parse(response.body) برای تجزیه پاسخ به یک هش Ruby استفاده کنید. برای سایر فرمت‌ها، می‌توانید از response.body برای محتوای خام استفاده کنید.

س: آیا برای استفاده از کد تولید شده نیاز به نصب gem دارم؟

ج: کتابخانه Net::HTTP بخشی از کتابخانه استاندارد Ruby است، بنابراین هیچ gem اضافی برای درخواست‌های HTTP پایه مورد نیاز نیست. برای مدیریت JSON، gem 'json' از Ruby 1.9 در کتابخانه استاندارد گنجانده شده است.

س: چگونه یک دستور curl با آپلود فایل را به Ruby تبدیل کنم؟

ج: برای آپلود فایل در Ruby، باید از داده‌های فرم چندبخشی با Net::HTTP استفاده کنید. مبدل ما دستورات curl با گزینه‌های -F یا --form را پشتیبانی می‌کند و کد Ruby مناسب تولید می‌کند.

س: چگونه کوکی‌ها را در Ruby Net::HTTP مدیریت کنم؟

ج: کتابخانه Net::HTTP در Ruby مدیریت کوکی را از طریق HTTP::Cookie jar ارائه می‌دهد. هنگامی که دستورات curl شامل مدیریت کوکی (با استفاده از -b یا --cookie) را تبدیل می‌کنید، ابزار ما کد Ruby تولید می‌کند که به درستی کوکی‌ها را مدیریت می‌کند.

س: تفاوت بین استفاده از curl و Ruby Net::HTTP برای تست API چیست؟

ج: در حالی که curl برای تست سریع API در خط فرمان عالی است، Ruby Net::HTTP رویکردی برنامه‌نویسی ارائه می‌دهد که با برنامه‌های Ruby شما یکپارچه می‌شود. تبدیل curl به Ruby به پر کردن شکاف بین تست و پیاده‌سازی در توسعه Ruby کمک می‌کند.

مرجع دستور Curl برای تست API در Ruby

درک دستورات curl برای تست مؤثر API با Ruby ضروری است. در اینجا مرجع سریعی از گزینه‌های رایج curl که مبدل ما پشتیبانی می‌کند آمده است:

نحو پایه curl

curl [options] [URL]

گزینه‌های رایج curl

تبدیل دستورات پیچیده curl

مبدل Ruby ما دستورات پیچیده curl شامل چندین هدر، احراز هویت، داده‌های محتوا و گزینه‌های مختلف را پشتیبانی می‌کند. به سادگی دستور curl خود را جایگذاری کنید و کد Ruby تمیز و مدرن با استفاده از کتابخانه Net::HTTP دریافت کنید.

بهترین شیوه‌های Ruby Net::HTTP

هنگام کار با کتابخانه Ruby Net::HTTP، این بهترین شیوه‌ها را برای تعاملات API کارآمد و امن دنبال کنید:

۱. از یک استخر اتصال برای درخواست‌های متعدد استفاده کنید

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

2. Implement Proper Error Handling

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

۳. از JSON به صورت ایمن استفاده کنید

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