경로와 매개변수
HTTP를 처리합니다
경로와 매개변수은(는) CoddyKit의 무료 Ruby Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ruby Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
HTTP 요청 처리하기
웹 앱은 라우트를 일치시키고 매개변수를 읽어 요청에 응답합니다.
- 경로 구간은 동적일 수 있습니다.
- 쿼리 문자열은 추가 데이터를 전달합니다.
- 양식 본문은 제출된 필드를 전달합니다.
시나트라는 이 모든 값을 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']에서 사용할 수 있습니다. - 숫자로 된 ID만 허용하는 제약 조건 등에 유용합니다.
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를 사용하여 클라이언트를 다른 URL로 보내십시오.
- 기본적으로 302 상태를 발급합니다.
- 양식 제출이 성공한 후에 흔히 사용합니다.
require 'sinatra'
post '/login' do
redirect '/dashboard'
end빠른 확인
라우트와 매개변수에 대해 무엇을 알고 있는지 확인해 보십시오.
복습
시나트라가 입력을 처리하는 방법을 배웠습니다:
- 이름 있는 매개변수에는 경로에서
:name을 사용합니다. - 쿼리 문자열과 양식 필드도
params를 채웁니다. - 스플랫과 정규식 라우트는 유연한 경로를 캡처합니다.
- 문자열 매개변수는 항상 검증하고 변환하십시오.
redirect를 사용하여 URL 사이에서 클라이언트를 이동시키십시오.
다음에는 구조화된 JSON 응답을 반환합니다.
자주 묻는 질문
“경로와 매개변수” 강의는 무료인가요?
네 — “경로와 매개변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ruby Academy 강의 전체를 잠금 해제할 수 있습니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“경로와 매개변수”에서 뭘 배우나요?
HTTP를 처리합니다 브라우저에서 직접 실행하는 실습 코드로 Ruby Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ruby Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ruby Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“경로와 매개변수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ruby Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ruby Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Sinatra 기초
- 경로와 매개변수
- JSON API
- 미들웨어와 Rack