تحويل أوامر curl إلى كود Ruby - توليد كود Ruby Net::HTTP جاهز للاستخدام لطلبات 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
فيما يلي بعض أوامر curl الشائعة التي يمكنك تحويلها إلى كود 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
مكتبة Ruby's Net::HTTP هي طريقة قوية لإجراء طلبات 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
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
انسخ أمر curl الخاص بك → الصقه في مربع الإدخال → احصل على كود Ruby Net::HTTP المحول
يدعم محولنا أوامر curl المعقدة ويترجمها إلى كود Ruby نظيف وفعال باستخدام مكتبة Net::HTTP
تتعامل أداتنا مع خيارات curl الشائعة هذه وتحولها إلى كود Ruby Net::HTTP مناسب:
ج: كود Ruby Net::HTTP المولد متوافق مع Ruby 2.0 وما فوق. بالنسبة لإصدارات Ruby الأقدم، قد تكون هناك حاجة لتعديلات طفيفة.
ج: الكود الأساسي المولد لا يتضمن معالجة شاملة للأخطاء. بالنسبة لكود الإنتاج، يجب عليك إضافة كتل begin/rescue للتعامل مع الاستثناءات المحتملة مثل Net::HTTPError أو مشاكل الاتصال.
ج: بالنسبة لاستجابات JSON، استخدم JSON.parse(response.body) لتحليل الاستجابة إلى هاش Ruby. بالنسبة للتنسيقات الأخرى، يمكنك استخدام response.body للمحتوى الخام.
ج: مكتبة Net::HTTP هي جزء من المكتبة القياسية لـ Ruby، لذا لا توجد حاجة لجواهر إضافية للطلبات HTTP الأساسية. بالنسبة لمعالجة JSON، تم تضمين جوهرة 'json' في المكتبة القياسية منذ Ruby 1.9.
ج: لتحميلات الملفات في Ruby، ستحتاج إلى استخدام بيانات نموذج متعددة الأجزاء مع Net::HTTP. يتعامل محولنا مع أوامر curl التي تحتوي على خيارات -F
أو --form
ويولد كود Ruby المناسب.
ج: توفر مكتبة Ruby's Net::HTTP التعامل مع ملفات تعريف الارتباط من خلال HTTP::Cookie jar. عندما تقوم بتحويل أوامر curl التي تتضمن التعامل مع ملفات تعريف الارتباط (باستخدام -b
أو --cookie
)، تقوم أداتنا بتوليد كود Ruby يدير ملفات تعريف الارتباط بشكل صحيح.
ج: بينما يعتبر curl ممتازاً لاختبار API السريع في سطر الأوامر، توفر Ruby Net::HTTP نهجاً برمجياً يتكامل مع تطبيقات Ruby الخاصة بك. يساعد تحويل curl إلى Ruby في سد الفجوة بين الاختبار والتنفيذ في تطوير Ruby.
فهم أوامر curl ضروري لاختبار API الفعال مع Ruby. إليك مرجعاً سريعاً لخيارات curl الشائعة التي يدعمها محولنا:
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 connectionيتعامل محول Ruby لدينا مع أوامر curl المعقدة بما في ذلك الرؤوس المتعددة والمصادقة وحمولات البيانات والخيارات المختلفة. ما عليك سوى لصق أمر curl الخاص بك والحصول على كود 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
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