태그 보관물: web-applications

web-applications

웹 사이트에 친숙한 URL 제공 및 데이터베이스 ID의 현실 이름을 바꾸면 어떻게됩니까?

우리는 제품, 블로그 게시물 등의 리소스 데이터베이스를 보유하고 있습니다. 공개 웹 사이트를 위해 URL 체계를 설계해야합니다.

다음은 데이터베이스 ID 바인딩 된 두 가지 예입니다.

다음은 친근한 예입니다.

(내 브라우징 생활을 조금 엿볼 수 있습니다)

이메일이나 문서에서 URL을 가리 키거나 볼 때 URL 끝에 무엇이 있는지 알기 때문에 친숙한 URL을 좋아합니다. SEO에 더 좋거나 예전에는 좋았습니다.

문서 나 제품의 이름을 바꾸면 어떻게됩니까? 변경 되었기 때문에 (Wiki는 변경되지 않지만 리소스는 변경 될 수 있음) 또는 오타 때문에 발생합니까? 우리의 자원은 매우 기술적이고 긴 단어이며 오류가 발생하기 쉽습니다.

또한 데이터베이스 ID는 숫자입니다. 가장 한 대여점을 사용하여 동영상 주소에 대한 아이디어를 살펴 보겠습니다.

ID는 분명하며 DB 조회에 사용됩니다. 벌금.

슬라이딩 도어 비트는 고유하지 않으며 비디오 타이틀에서 방금 생성되었으므로 GET에서 확인할 수 있으므로 글라이딩 도어가 입력되어 문서 287171의 내용과 일치하지 않으면 404로 응답합니다.

또는 누군가 무시하고 있다면 인간이 원하는 것을 고수 할 수 있도록 무시해도됩니다. 따라서이 URL은 다음과 같이 작동합니다.

친숙한 부분을 확인하는 문제는 언급했듯이 이름 변경 또는 오타 수정 문제입니다. 이름이 변경되고 도메인에서 발생하는 경우 외부에있는 URL을 중단하고 싶지 않으므로 다음과 같이해야합니다.

  • 친절한 부분 만 확인하지 마십시오.

  • 데이터베이스 레코드에 친숙한 부분의 ‘이력’을 추가하여 이전의 친숙한 ID가 계속 작동하는지 확인하십시오!

당신의 생각과 아이디어는 환영합니다.

누가



답변

URL에 ID를 유지하는 것이 가장 미래에 대비할 수있는 방법이며 시연 한 것처럼 URL은 여전히 ​​비교적 좋아 보입니다.

여러 프로젝트에서 사용하는 또 다른 옵션은 이전에 사용한 슬러그의 이력을 유지하는 것입니다. 제목이 변경되면 슬러그를 업데이트하고 누군가가 쓸모없는 슬러그를 찾으려면 오래된 슬러그 목록에서 검색하십시오. 이렇게하면 오래된 슬러그를 새로운 컨텐츠에 재사용 할 수 있습니다 (구현에 따라 다름).

워드 프레스는 그렇게 했으며 레일스의 친숙한 ID를 관리하기 위해 가장 많이 사용되는 gem 인 friendly_id 보석도 마찬가지 였습니다.

또한 잘 보이는 URL을 좋아하지만 더 기술에 정통한 사용자가 사용하는 기능 일 가능성이 높습니다. 일부 브라우저는 URL (또는 그 일부)을 숨기기 시작합니다.


답변

과거에는 두 가지 시나리오를 사용했습니다.

  1. /id/some-slug여기서 id조회하는데 사용되는 , 슬러그 없다. 따라서 슬러그는 무엇이든 될 수 있습니다 . 그러나 슬러그가 실제 슬러그와 일치하지 않으면 사용자는 현재 버전으로 리디렉션됩니다.

  2. /permalink경우에 우리는 URL의 ID 싶지 않았다 , 또는 어디 URL을 변경해서는 안됩니다을 하더라도 ID를 사용할 수있다 (참조 [1][2] ). 물론,이 경우 permalink조회에 사용됩니다 . 현재 슬러그와 영구 링크 (첫 번째 슬러그)는 모두 데이터베이스에 저장됩니다.

이 두 가지 방법으로 데이터베이스에 슬러그의 이력을 유지해야하므로 곧 문제가 발생할 수 있습니다.


추신 : 두 번째 경우 소셜 크레딧을 유지하려면 매우 구체적인 라우팅이 필요합니다.

  • 원하는 경우 사용자를 현재 (비 퍼머 링크가 아닌) URL로 리디렉션
  • 소셜 버튼에서 영구 링크를 URL로 사용
  • 항상 페이스 북 크롤러를 퍼머 링크로 리디렉션

[1][2]를 다시 참조 하십시오.


답변

문서 나 제품의 이름을 바꾸면 어떻게됩니까?

HTTP 응답 301 (이동)은 이러한 목적으로 설계되었습니다. 클라이언트가 이전 URI로 이동하면 새 URI를 보내면 해당 URI로 리디렉션 할 수 있습니다.

슬라이딩 도어 비트는 고유하지 않으며 비디오 타이틀에서 방금 생성되었으므로 GET에서 확인할 수 있으므로 글라이딩 도어가 입력되어 문서 287171의 내용과 일치하지 않으면 404로 응답합니다.

올바르게 수행하면 작업이 중복됩니다. 자원의 이름 식별자와 동일한 URI의 ID가 모두 있습니다. 그것은 어떤 목적에도 도움이되지 않습니다.

동일한 이름을 가진 여러 영화가 걱정되는 경우 영화에 대한 추가 정보를 URL에 추가 할 수 있습니다

http://vidsyeah.com/video/2000/sliding_doors
http://vidsyeah.com/video/1932/sliding_doors

또는

http://vidsyeah.com/video/studios/paramount/sliding_doors
http://vidsyeah.com/video/studios/warnerbros/sliding_doors

데이터 모델에 적합하다면 ID를 사용하는 데 아무런 문제가 없다고 말한 것입니다. 특히 그룹화하는 유일한 것이 비디오라는 것입니다.

http://vidsyeah.com/video/210232
http://vidsyeah.com/video/2342

컴퓨터 또는 개인 사용자 인 클라이언트는 처음에 URI 구조에 너무 의존해서는 안되며, 찾은 리소스를 파악하기 위해 반환 한 콘텐츠를보고 있어야합니다.

합리적인 URI 시스템을 가진 사람에게는 문제가 없습니다. 누군가가 리소스의 위치를 ​​쉽게 추측하거나 공유 속성 (예 : 2004 년의 모든 영화)을 기반으로 구조를 위아래로 탐색 할 수 있지만 시스템은 의존해서는 안됩니다 URI를 변경하면 클라이언트가 중단되지 않아야합니다.

또는 다른 방식으로 바꾸려면 밤새 바꿀 수 있어야합니다.

http://vidsyeah.com/video/studios/paramount/sliding_doors

http://vidsyeah.com/video/12323

클라이언트가 URL이 아닌 컨텐츠를보고 있어야하므로 클라이언트가 중단되지 않아야합니다.


답변

BBC는 다음과 같은 슬러그를 사용합니다.

  • 영숫자 (압축성)
  • 고유 (조회 용)
  • 비 순차적 (DB에 추가 된 순서가 노출되지 않도록)

예 : http://www.bbc.co.uk/programmes/b006mk7h

각 공공 프로그램에는 ID와 슬러그가 모두 있습니다. 그러면 ID는 평소와 같이 자동 증가 정수가 될 수 있으며 간격이 노출되지 않습니다.


답변

RESTful 관점에서 URI는 사용성을 향상시키기 위해 예측 가능하고 단계적인 계층 구조를 따라야합니다.

이를 통해 소비자가보다 쉽게 ​​사용할 수 있습니다. 데이터에 관계가있는 경우 일종의 계층이 필요합니다.

계획은 다음과 같습니다. \video\[name]\[id]

추가 분류에 이름을 사용하지 않는 경우 이름이 삭제 될 수 있습니다. \video\[id].

그러나 비디오를 분류하려면 이름이 유용 할 수 있습니다.

예 :

  • \ video \ SwingingDoors \ 123
  • \ video \ 스윙 어문 \ 124
  • \ video \ 미닫이 문 \ 125
  • \ video \ 미닫이 문 \ 126

액세스 모델링 방법에 대한 설계 결정입니다.


답변