Ruby:
Gửi một yêu cầu HTTP
Cách thực hiện:
Ruby làm cho việc gửi yêu cầu HTTP trở nên khá dễ dàng. Đây là cách nhanh nhất với thư viện chuẩn Net::HTTP.
require 'net/http'
require 'uri'
uri = URI('http://example.com')
response = Net::HTTP.get(uri)
puts response
Điều này sẽ xuất nội dung HTML của http://example.com
.
Bạn có thể muốn gửi dữ liệu nữa:
require 'net/http'
require 'uri'
uri = URI('http://example.com/api')
res = Net::HTTP.post_form(uri, 'key1' => 'value1', 'key2' => 'value2')
puts res.body
Điều này gửi một yêu cầu POST với dữ liệu và hiển thị phản hồi.
Sâu hơn:
Trước đây, gửi yêu cầu HTTP là khó khăn hơn và bạn có thể cần sử dụng một gem như HTTParty
. Nhưng thư viện Net::HTTP
tích hợp sẵn của Ruby đã phát triển rất nhiều. Hiện tại nó hỗ trợ hầu hết những gì bạn cần.
Tuy nhiên, Net::HTTP
có thể rườm rà. Nếu dự án của bạn cần nhiều tính năng HTTP hoặc cú pháp đẹp hơn, HTTParty
hoặc Faraday
là những lựa chọn tuyệt vời. Những gems này cung cấp một API biểu cảm hơn và có thể xử lý các tình huống phức tạp hơn như middleware hoặc các adapter khác nhau.
Cơ bản, gửi một yêu cầu HTTP với Ruby bao gồm việc tạo một client HTTP, thiết lập một đối tượng yêu cầu với phương thức, tiêu đề và thân nếu cần, sau đó gửi yêu cầu để nhận phản hồi.
Ví dụ về HTTParty:
require 'httparty'
response = HTTParty.get('http://example.com')
puts response.body
Điều này làm cùng một việc với Net::HTTP.get
nhưng với ít cấu hình hơn.
Xem thêm:
Để có thông tin chi tiết hơn, tài liệu của Ruby rất hữu ích:
- Net::HTTP: https://ruby-doc.org/stdlib/libdoc/net/http/rdoc/Net/HTTP.html
- HTTParty: https://github.com/jnunemaker/httparty
- Faraday: https://lostisland.github.io/faraday/
Và nếu bạn có hứng thú sâu sắc với mạng HTTP của Ruby, hãy xem qua:
- Ruby’s Open URI: https://ruby-doc.org/stdlib/libdoc/open-uri/rdoc/OpenURI.html
- WebMock để kiểm tra yêu cầu HTTP: https://github.com/bblimke/webmock