RESTful 경로
3667 단어 codenewbiehtmlwomenintechruby
Restful 경로는 개발자와 사용자가 코드를 더 잘 인식하고 더 잘 이해할 수 있으므로 데이터를 쉽게 조작할 수 있는 디자인 패턴입니다.
Restful 경로는 GET, POST, PUT, PATCH 및 DELETE와 같은 HTTP 동사를 CRUD로 잘 알려진 컨트롤러 작업(Create, Read, Update, Delete)에 매핑합니다.
브라우저의 현재 위치를 나타내는 URL에 의존하는 대신 Restful 경로는 HTTP REQUESTS를 사용하여 USER로부터 작업을 보내고 받습니다. 이러한 요청은 요청 수신, 검사, 컨트롤러에서 HTTP 메서드 및 URL 식별 및 USER에게 응답을 제공하는 작업으로 코드 실행 시 응용 프로그램과 함께 작동합니다.
PUT-PATCH-DELETE
HTML은 상태 비저장이므로 GET 및 POST 요청만 지원하므로 POST 요청이 브라우저로 보낸 숨겨진 요청입니다. 위의 세 가지 작업을 수행하기 위해 "사용 Rack::MethodOverride"미들웨어로 Rack::MethodOverride를 Config.ru 파일에 사용합니다. 이 작업을 수행하려면 지원되지 않는 메서드로 요청을 시뮬레이트하기 위해 html 형식의 post 메서드를 사용해야 합니다. 다음을 입력해야 합니다.
<input type="hidden">
팔로우
<input type="hidden" name="_method">
메소드의 이름은 값으로 포함되어야 합니다.
<form method="post" action="/logout">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="Log out">
</form>
내 웹 앱에서 만든 각 작업을 하나씩 설명하겠습니다.
인덱스 액션
get '/pets' do
authenticate
@pets = current_user.pets.all
erb :'/pets/dashboard'
end
이것은 '/pets' 경로에 대한 GET 요청에 응답하며 인덱스 작업입니다. 인스턴스 변수 @pets를 통해 데이터베이스의 모든 사용자 애완 동물에 대한 보기 액세스를 허용하고 이를 my erb에 렌더링합니다:'/pets/dashboard'
새로운 액션
get '/pets/new' do
erb :'/pets/new'
end
새 애완 동물을 만들기 위해 양식을 로드하기 위한 GET 요청입니다.
post '/pets' do
@pet = Pet.new(name: params[:name],age:
params[:age],notes: params[:notes])
if @pet.save
current_user.pets << @pet
redirect "/pets/#{@pet.id}"
else
erb :'/pets/new'
end
이것은 POST 요청에 응답하고 매개변수를 기반으로 새 애완동물을 생성하고 데이터베이스에 저장합니다. 애완 동물이 생성되면 이 작업은 show.erb로 리디렉션됩니다.
액션을 보여주세요
get '/pets/:id' do
@pet = Pet.find_by(id: params[:id])
erb :'/pets/show'
end
컨트롤러 작업은 '/pets/:id' 경로에 대한 GET 요청에 응답합니다. 이 경로는 params 해시를 통해 뷰의 ID로 애완 동물에 액세스하는 동적 경로이기 때문입니다.
편집 작업
get '/pets/:id/edit' do
@pet = Pet.find_by(id: params[:id])
dont_edit
erb :'/pets/edit'
end
이 경로는 GET 요청을 만들어 브라우저에서 편집 양식을 로드합니다.
patch '/pets/:id' do
@pet = Pet.find_by(id: params[:id])
dont_edit
@pet.update(name: params[:name],age: params[:age],notes: params[:notes])
@pet.save
redirect '/pets'
end
양식을 제출한 후 PATCH는 '/pets/:id' 경로에 요청합니다. 먼저 매개변수를 통해 이름, 나이 및 메모별로 애완 동물을 가져온 다음 애완 동물을 저장하고 대시보드 '/pets'로 리디렉션합니다.
조치 삭제
delete '/pets/:id' do
@pet = Pet.find_by(id: params[:id])
dont_edit
@pet.destroy
redirect '/pets'
end
이 양식은 DELETE 요청을 통해 '/pets/:id' 경로에 제출됩니다. 이 작업은 데이터베이스에서 ID로 애완동물을 찾고 삭제하고 '/pets'로 리디렉션합니다.
읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(RESTful 경로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sarisgar28/restful-routes-3in텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)