Ruby 기술을 연습하고 작업할 작은 프로젝트를 찾고 있다면 바로 찾아오셨습니다.
오늘은 여러분과 함께 "링크 단축기" 응용 프로그램을 만들려고 합니다.
링크 단축기란 무엇인가요?
분명히 전에 본 적이 있을 것입니다...
다음과 같은 "짧은 링크":
https://t.co/eKBRm2tTUF
이 URL을 방문하면 원래 URL로 리디렉션됩니다.
하지만 어떻게 작동합니까?
아이디어는 이 코드를 매핑하는 것입니다. eKBRm2tTUF
예에서는 데이터베이스의 원래 URL로 이동합니다.
간단한 개념이지만 처리해야 할 몇 가지 사항이 있습니다.
좋아요...
이 코드는 어떻게 생성합니까? 전체 URL과 어떻게 일치시키나요?
그럼 시작하겠습니다!
첫 단계
설정이 전혀 필요하지 않으므로 Sinatra를 사용하여 바로 진행할 수 있습니다.
그리고 일반적인 SQL 데이터베이스 대신 다른 작업도 수행할 예정입니다.
그것이 무엇인지 알아 보려면 계속 읽으십시오 🙂
초기 코드는 다음과 같습니다. :
require 'sinatra' get '/:url' do "The URL is #{params[:url]}" end get '/' do "Send a POST request to register a new URL." end post '/' do "New URL added: #{params[:url]}\n" end
이것은 3가지 작업 또는 원하는 경우 경로가 있는 간단한 Sinatra 앱입니다.
우리는 우리의 응용 프로그램을 방문할 수 있으며 "Send POST 요청" 메시지를 받게 됩니다.
어떻게 합니까?
Postman과 같은 브라우저 플러그인을 사용할 수 있습니다.
하지만 저는 curl
을 사용하고 싶습니다. 이런 종류의 일을 위해.
모든 운영 체제에 설치할 수 있어야 하는 편리한 도구이며 Sinatra 앱과 상호 작용할 수 있습니다.
POST 요청 보내기
따라하고 있다면 Sinatra 앱이 실행되고 curl
이 되어야 합니다. 컴퓨터에 설치되어 있습니다.
이제 다음과 같이 POST 요청을 보낼 수 있습니다.
curl localhost:4567 --data "url=rubyguides.com" -X POST
그러면 터미널에 "새 URL이 추가됨" 메시지가 인쇄됩니다.
훌륭합니다!
다음 단계는 이 URL을 더 짧은 URL에 매핑하는 것입니다.
어떻게 할 수 있는지 봅시다.
URL 매핑
매핑의 경우 해시 함수를 사용하거나 일종의 인코딩을 사용하여 임의의 문자열을 사용하여 수행할 수 있습니다.
한 가지 방법은 다음과 같습니다.
LETTERS = Array('a'..'z') def generate_short_url Array.new(6) { LETTERS.sample }.join end
이 경우 6자의 임의 문자열을 사용하겠습니다.
다른 방법을 보고 싶다면 동영상을 시청하세요.
이렇게 하면 원본 URL을 짧은 URL에 매핑하는 데 사용할 "짧은 코드"가 제공됩니다.
다음은 무엇인가요?
사용자를 적절한 위치로 리디렉션할 수 있도록 이 코드를 어딘가에 저장해야 합니다.
“NoSQL” 데이터베이스
이 프로젝트에서는 단순한 데이터베이스를 사용하고 싶었습니다.
그리고 파일을 사용하는 것보다 더 간단한 것은 무엇입니까?
Ruby의 표준 라이브러리에는 데이터 관리에 도움이 되는 이 PSStore 클래스가 포함되어 있습니다.
이것은 우리와 같은 소규모 응용 프로그램에 적합합니다.
코드는 다음과 같습니다. :
class ShortURL def self.save(code, original) store.transaction { |t| t =원본 } end def self.read(코드) store.transaction { |t| t } end def self.store @store ||=PSstore.new("short_urls.db") endend
여기에 몇 가지 일이 있습니다.
먼저 이 store
가 있습니다. PStore
에 액세스하는 방법 개체.
그런 다음 save
이 있습니다. &read
방법.
PStore
가 해시처럼 작동합니다. 모든 작업이 트랜잭션 블록 내에서 발생해야 한다는 차이점이 있습니다.
이제 ShortURL
을 사용하도록 Sinatra 앱을 업데이트할 수 있습니다. 클래스:
require 'sinatra' get '/:url' do redirect "https://" + ShortURL.read(params[:url]) end get '/' do "Send a POST request to register a new URL." end post '/' do ShortURL.save(generate_short_url, params[:url]) "New URL added: localhost:4567/#{generate_short_url}\n" end
그게 다야!
이제 작동하는 링크 단축기가 있습니다.
<블록 인용>전문가 팁:코드를 변경할 때 Shotgun gem을 사용하여 Sinatra 앱을 자동으로 다시 로드할 수 있습니다.
curl
을 사용할 필요가 없도록 양식을 추가하는 것과 같이 아직 해야 할 일이 있습니다. 새 URL을 제출합니다.
URL이 데이터베이스에 없으면 일부 메시지를 표시합니다.
그리고 중복 확인 , 따라서 다른 URL을 덮어쓰지 않습니다.
숙제로 남겨두겠습니다 🙂
요약
Ruby, Sinatra 및 PSstore를 사용하여 Link Shortener 애플리케이션을 구축하는 방법을 배웠습니다! 또한 curl
을 사용하여 POST 요청을 보내는 방법도 배웠습니다. http 클라이언트.
더 많은 사람들이 배울 수 있도록 이 기사를 친구들과 공유하는 것을 잊지 마십시오.