最近要实现一个推广链接的长链接转换到短链接的功能,不能接的第三方接口,如何生成短连接网上这些都说的明明白白了,这里只讲如何通过短连接访问长链接即真实地址。首先说看一下:
转换原理: 将原url通过一系列方式,转换成6位短码(只要能不重复,随便怎么方式都行);将长短链接存入数据库,形成一条对应关系;访问短链接的时候,在数据库找到对应的长链接,并通过重定向实现原url的访问;(如果你的转换方式能过还原,也可以不要数据库,但必须保证转换后的短码不能重复)数据库大概是这个样子。
如何生成短链接我就不说了,网上各种方法都可以用,生成的短链接其实一小段字符窜,然后在把域名端口拼接起来就好了。来看一下这个接口是如何实现的。
@RequestMapping("/{shortUrl}") public ModelAndView jumpLongLink(HttpServletRequest request, ModelAndView mav, @PathVariable("shortUrl")String shortUrl) { String longUrl = ""; String longurl = shorturlService.restoreUrl(shortUrl); if (longUrl!=null) { longUrl = longurl; } mav.setViewName("redirect:" + longUrl); return mav; }
第一行注解我就不讲了,{shortUrl}这个就是动态变化的生成的短链接,shorturlService.restoreUrl()方法是通过传入得短链接到库里查询对应的长链接即真实地址。然后转发重定向到真实的地址即可。完整的短链接本地访问:127.0.0.1/端口号/短链接,如:127.0.0.1/8888/2MnQFj,线上的访问地址:域名/短链接,如:www.baidu.com/2MnQFj,如果项目有拦截器,因为短链接是动态变化的,需要在前面加一层路径,像这样:127.0.0.1/8888/go/2MnQFj然后就完事了。