최근 당근마켓의 당근 부동산이라는 걸 보던 중 발견한 URL 주소
posts/아파트-4억-서울시-여러분-당근부동산-aQbjxLFNc
아파트-4억-서울시-여러분-당근부동산
은 알겠는데
aQbjxLFNc
은 뭐지?
Try it.
posts/아파트-4억-서울시-여러분-당근부동산 ❌
post/아무제목-aQbjxLFNc ⭕️
post/아무제목-aQbjxLFNc-아무내용 ❌
post/aQbjxLFNc ⭕️
아하 '-' 로 구분하는 문자열중 마지막인 aQbjxLFNc
가 Resource Id 구나!
당근마켓의 기존 URL과의 비교
articles/455XXXXXX
Resource Id가 9자리 숫자로 이루어진 걸 알 수 있다.
유추할 수 있는점
- 당근마켓은 4억개가 넘는 거래글이 올라왔구나.
- 다음에 등록된 글을 보고싶으면 Resource Id + 1 해주면 되겠구나.
거래글의 숫자는 비지니스적으로 의미있는 수치이기도 하고,
이런 자동 증가되는 Resource Id 형식은 악성 크롤링의 대상이 되기도한다.
당근부동산은 이런 단점들을 잘 보완하고 있다고 할 수 있다.
SEO(Search Engine Optimization) 전략
단순한 URL은 콘텐츠 정보를 전달합니다. 웹사이트 문서와 관련된 설명을 제공하는 카테고리 및 파일 이름을 만들면 사이트를 더 잘 구성하는 데 도움이 될 뿐만 아니라 콘텐츠에 관심을 두고 있는 사용자가 좀 더 쉽게 사용할 수 있으며 이들에게 더욱 친숙한 URL을 만들 수 있습니다. 인식할 수 있는 단어가 거의 없는 긴 암호문과도 같은 URL에 겁을 먹는 사용자도 있을 수 있습니다.
> 구글의 SEO 가이드 (opens in a new tab)
posts/아파트-4억-서울시-여러분-당근부동산-aQbjxLFNc
검색결과에 URL이 포함되어 내용을 알기 쉽다.
누군가에게 공유를 해도 URL만 보고 내용을 알기 쉽다.
사용자 친화적이다.
이런점에서 당근부동산이 더 사용자 친화적인 SEO전략을 잘 지키고 있다고 할 수 있다.
어떻게 구현해요?
서론에 Try it. 에서 시도했던 결과를 보면
'-'로 구분한 문자열중 가장 마지막 문자열을 key로
사용하고 있는걸 알 수 있다.
//posts/아파트-4억-서울시-여러분-당근부동산
@Get('posts/:title')
function getPost(@Param('title') title) {
const postKey = title.split('-').pop();
return postService.getPostByKey(postKey);
}