0Pricing
Ruby Academy · บทเรียน

เส้นทางและพารามิเตอร์

จัดการ HTTP

เส้นทางและพารามิเตอร์ เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

การจัดการคำขอเอชทีทีพี

เว็บแอปพลิเคชันตอบสนองคำขอด้วยการจับคู่เส้นทางและอ่านพารามิเตอร์

  • ส่วนต่าง ๆ ของเส้นทางสามารถเปลี่ยนแปลงได้
  • สตริงคำค้นใช้ส่งข้อมูลเพิ่มเติม
  • เนื้อหาของแบบฟอร์มใช้ส่งช่องข้อมูล

ซินาตราเปิดเผยข้อมูลทั้งหมดนี้ผ่านแฮช params

require 'sinatra'

get '/echo' do
  params['msg'].to_s
end

พารามิเตอร์ที่มีชื่อของเส้นทาง

เครื่องหมายโคลอนในเส้นทางจะกำหนดพารามิเตอร์ที่มีชื่อซึ่งใช้จับส่วนหนึ่งของเส้นทาง

  • /users/:id ตรงกับ /users/42
  • ค่าที่จับได้จะปรากฏใน params['id']
require 'sinatra'

get '/users/:id' do
  "User ID is #{params['id']}"
end

พารามิเตอร์หลายรายการ

เส้นทางหนึ่งเส้นทางสามารถมีพารามิเตอร์ที่มีชื่อได้หลายรายการ

  • ส่วนที่ขึ้นต้นด้วยโคลอนแต่ละส่วนจะกลายเป็นคีย์ใน params
  • ลำดับในเส้นทางไม่มีผลต่อการเข้าถึง
require 'sinatra'

get '/posts/:year/:month' do
  "Posts from #{params['month']}/#{params['year']}"
end

พารามิเตอร์สตริงคำค้น

ค่าของสตริงคำค้นที่อยู่หลัง ? จะถูกใส่ไว้ใน params ด้วย

  • /search?q=ruby ให้ค่า params['q'] == 'ruby'
  • คู่ค่าหลายคู่จะแยกจากกันด้วย &
require 'sinatra'

get '/search' do
  "Searching for: #{params['q']}"
end

การทำงานกับพารามิเตอร์ในรูปแบบแฮช

ออบเจ็กต์ params ทำงานคล้ายแฮชของรูบี การฝึกใช้แฮชธรรมดาจะช่วยให้เห็นรูปแบบต่าง ๆ ได้ชัดเจน

  • ใช้ fetch พร้อมค่าเริ่มต้นเพื่อความปลอดภัย
  • โดยทั่วไปคีย์จะเป็นสตริง
params = { 'name' => 'Ada', 'lang' => 'Ruby' }

puts params['name']
puts params.fetch('age', 'unknown')

ข้อมูลแบบฟอร์มด้วย POST

สำหรับคำขอ post ช่องข้อมูลของแบบฟอร์มที่ส่งมาจะปรากฏใน params ด้วย

  • ซินาตราจะแยกวิเคราะห์เนื้อหาคำขอโดยอัตโนมัติ
  • รูปแบบการเข้าถึงเหมือนกับพารามิเตอร์คำค้น
require 'sinatra'

post '/signup' do
  "Welcome, #{params['username']}"
end

พารามิเตอร์สำหรับจับส่วนที่เหลือ

ตัวจับส่วนที่เหลือ (*) จะจับอักขระจำนวนเท่าใดก็ได้ และเก็บไว้ในอาร์เรย์ params['splat']

  • /files/* จะจับส่วนที่เหลือของเส้นทาง
  • ตัวจับส่วนที่เหลือหลายตัวจะสร้างรายการหลายรายการในอาร์เรย์
require 'sinatra'

get '/files/*' do
  "Path: #{params['splat'].first}"
end

เส้นทางแบบไม่บังคับและนิพจน์ทั่วไป

เส้นทางสามารถใช้นิพจน์ทั่วไปเพื่อจับคู่ได้อย่างแม่นยำ

  • ค่าที่จับได้จะอยู่ใน params['captures']
  • มีประโยชน์สำหรับข้อจำกัด เช่น อนุญาตเฉพาะรหัสตัวเลข
require 'sinatra'

get %r{/item/(\d+)} do
  "Item #{params['captures'].first}"
end

การตรวจสอบความถูกต้องของพารามิเตอร์

โปรดตรวจสอบและแปลงพารามิเตอร์ขาเข้าเสมอ เนื่องจากพารามิเตอร์เหล่านี้เข้ามาในรูปแบบสตริง

  • ใช้ to_i หรือ Integer() สำหรับตัวเลข
  • ปฏิเสธค่าที่จำเป็นซึ่งหายไปพร้อมแสดงข้อผิดพลาดที่ชัดเจน
def parse_id(raw)
  id = Integer(raw)
  raise 'must be positive' if id <= 0
  id
end

puts parse_id('42')

ค่าเริ่มต้น

กำหนดค่าเริ่มต้นที่เหมาะสมให้พารามิเตอร์ที่ไม่บังคับ เพื่อหลีกเลี่ยงข้อผิดพลาดจากค่าที่ว่างเปล่า

  • params.fetch('page', '1')
  • ใช้ร่วมกับการแปลงค่าเพื่อแบ่งหน้าอย่างปลอดภัย
params = { 'page' => nil }
page = (params['page'] || '1').to_i
puts "Page: #{page}"

การเปลี่ยนเส้นทาง

ใช้ redirect เพื่อส่งไคลเอนต์ไปยังยูอาร์แอลอื่น

  • โดยค่าเริ่มต้นจะส่งสถานะ 302
  • มักใช้หลังจากส่งแบบฟอร์มสำเร็จ
require 'sinatra'

post '/login' do
  redirect '/dashboard'
end

ตรวจสอบความเข้าใจ

ตรวจสอบความรู้ของคุณเกี่ยวกับเส้นทางและพารามิเตอร์

สรุป

คุณได้เรียนรู้วิธีที่ซินาตราจัดการข้อมูลขาเข้า:

  • พารามิเตอร์ที่มีชื่อใช้ :name ในเส้นทาง
  • สตริงคำค้นและช่องข้อมูลของแบบฟอร์มจะเติมข้อมูลลงใน params ด้วย
  • ตัวจับส่วนที่เหลือและเส้นทางนิพจน์ทั่วไปใช้จับเส้นทางที่ยืดหยุ่น
  • ตรวจสอบและแปลงพารามิเตอร์ที่เป็นสตริงเสมอ
  • ใช้ redirect เพื่อย้ายไคลเอนต์ระหว่างยูอาร์แอล

ต่อไป คุณจะส่งคืนการตอบสนอง JSON แบบมีโครงสร้าง

คำถามที่พบบ่อย

บทเรียน “เส้นทางและพารามิเตอร์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เส้นทางและพารามิเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เส้นทางและพารามิเตอร์”

จัดการ HTTP คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “เส้นทางและพารามิเตอร์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน Sinatra
  2. เส้นทางและพารามิเตอร์
  3. API แบบ JSON
  4. มิดเดิลแวร์และ Rack
← กลับไปที่ Ruby Academy