Ruby:
ส่งคำขอ HTTP
วิธีทำ:
Ruby ทำให้การส่งคำขอ HTTP เป็นเรื่องง่าย นี่คือวิธีที่เร็วที่สุดด้วยห้องสมุดมาตรฐาน Net::HTTP
require 'net/http'
require 'uri'
uri = URI('http://example.com')
response = Net::HTTP.get(uri)
puts response
สิ่งนี้จะแสดงผลลัพธ์เนื้อหา HTML ของ http://example.com
.
คุณอาจต้องการโพสต์ข้อมูลด้วย:
require 'net/http'
require 'uri'
uri = URI('http://example.com/api')
res = Net::HTTP.post_form(uri, 'key1' => 'value1', 'key2' => 'value2')
puts res.body
สิ่งนี้ส่งคำขอ POST พร้อมข้อมูลและแสดงคำตอบ
ลงลึก:
ในอดีต การส่งคำขอ HTTP เป็นเรื่องยุ่งยาก และคุณอาจต้องใช้ gem เช่น HTTParty
แต่ห้องสมุด Net::HTTP
ที่มาพร้อมกับ Ruby นั้นได้พัฒนาไปมาก และตอนนี้รองรับสิ่งที่คุณต้องการได้ส่วนใหญ่
อย่างไรก็ตาม, Net::HTTP
อาจดูพูดเยอะ หากโปรเจกต์ของคุณต้องการฟีเจอร์ HTTP เพิ่มเติมหรือซินแท็กซ์ที่ใช้ง่ายขึ้น, HTTParty
หรือ Faraday
เป็นทางเลือกที่ดี จีมเหล่านี้มี API ที่เข้าใจง่ายกว่าและสามารถรับมือกับสถานการณ์ที่ซับซ้อนมากขึ้น เช่น มิดเดิลแวร์หรืออะแดปเตอร์ที่แตกต่างกัน
โดยพื้นฐานแล้ว การส่งคำขอ HTTP ด้วย Ruby เกี่ยวข้องกับการสร้างไคลเอนต์ HTTP, ตั้งค่าวัตถุคำขอโดยมีวิธีการ, ส่วนหัว และเนื้อหาถ้าจำเป็น จากนั้นจึงส่งคำขอเพื่อรับคำตอบ
ตัวอย่างของ HTTParty:
require 'httparty'
response = HTTParty.get('http://example.com')
puts response.body
ทำเหมือน Net::HTTP.get
แต่ด้วยการตั้งค่าน้อยลง
ดูเพิ่มเติม:
สำหรับข้อมูลเพิ่มเติมอย่างละเอียด, คู่มือของ Ruby เป็นประโยชน์มาก:
- 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/
และถ้าคุณมีความสนใจอย่างหนักในการเชื่อมต่อเครือข่าย HTTP ของ Ruby, ลองดูที่:
- Ruby’s Open URI: https://ruby-doc.org/stdlib/libdoc/open-uri/rdoc/OpenURI.html
- WebMock สำหรับทดสอบคำขอ HTTP: https://github.com/bblimke/webmock