Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby와 Sinatra로 나만의 링크 단축 앱 구축

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 클라이언트.

더 많은 사람들이 배울 수 있도록 이 기사를 친구들과 공유하는 것을 잊지 마십시오.