2013-09-21 2 views
0

저는 jsfiddle와 같은 재미있는 코드 놀이터를 만들고 있습니다. 내가 익숙하지 않은 한 가지는 고유 한 문자열이 생성 된 URL, 즉 jsfiddle.net/QyqvC/를 단축하는 것입니다.URL 데이터 단축 및 검색

나는 여기에 node.js 솔루션을 찾았다 고 믿는다 : http://pravin.paratey.com/posts/building-url-shortener 그러나 이처럼 독특한 캐릭터를 가진 URL이 "jsfiddle.net/QyqvC/"와 같은 URL을 만들 때 어떻게해야할지 모르겠다. 해당 특정 페이지 (html, css, javascript 등)에 대해로드 할 것으로 예상되는 데이터는 jsfiddle처럼로드됩니다.

내가 생각했던 한 가지 해결책은 자바 스크립트에서 고유 한 문자를 생성 한 다음 js 스크립트가 mysite.com에서 mysite.com/AqUeFg로 URL을 수정 한 다음 해당 코드를 현재 저장하고있는 코드 상자 (html , js, css) 내 데이터베이스에서 이러한 고유 한 문자 (AqUeFg)와 함께 그리고 나서 "/"다음에 URL이 끝날 때 고유 한 문자를 확인할 수있는 익명의 함수를 호출합니다. 내 DB (html, css, js)의 데이터를 찾아서 해당 상자에 표시하는 데 사용됩니다.

이 솔루션이 좋은지 확실하지 않습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 아마 거기에있는 것처럼 느껴지며 어떤 솔루션을 사용하더라도 어떻게 고유 한 문자가 부족한 시나리오를 피할 수 있습니까?

+0

우선,이 URL은 단축되지 않습니다. 왜냐하면 ... 글쎄, 당신은 어떤 URL도 짧게하지 않으므로, 당신은 단지 유일한 ID를 만들고있는 것입니다. 둘째, 어떻게 데이터를 얻으려고 생각 했습니까? 무엇을 기반으로할까요? 가져올 조각을 어떻게 알 수 있습니까? – Zirak

+1

_ "고유 한 문자가 부족한 시나리오는 어떻게 피할 수 있습니까?"_ ID 문자열의 길이가 고정되어 있으면 고정 된 수의 조합이 가능하므로 이론적으로는 결국 실행하게됩니다. 밖으로 나가 - 아주 많은 수십억의 조합이 _ 아주 오랜 시간 동안 일어나지 않을 것이라는 것을 제외하고는 ... – nnnnnn

답변

0

가장 쉬운 방법은 base64 인코딩하는 것입니다.

var uri = new Buffer('your-slug').toString('base64'); 

그물 주위에 떠 다니는 수많은 솔루션이 있습니다.

+0

고맙습니다. – user2801524

+1

문자열을 base64로 변환하려는 경우 ['btoa'] (https://developer.mozilla.org/en-US/docs/Web/API/window.btoa) – Zirak

+0

길에서 OP 그 또는 그녀가 실제로 기존의 일반 영어 문자열을 단축하거나 인코딩하려고하지 않는 문제를 설명합니다. 아이디어는 jsfiddle처럼 고유 한 ID를 생성하는 것입니다. – nnnnnn