官术网_书友最值得收藏!

Reader's challenge – an API for URL shortening

With all the basics you have learned up to now, try to implement a URL shortening service. A URL shortener takes a very long URL and returns a shortened, crisp, and memorable URL back to the user. At first sight, it looks like magic, but it is a simple math trick.

In a single statement, URL shortening services are built upon two things:

  •  A string mapping algorithm to map long strings to short strings (Base 62)
  •  A simple web server that redirects a short URL to the original URL

There are a few obvious advantages of URL shortening:

  • Users can remember the URL; easy to maintain
  • Users can use the links where there are restrictions on text length, for example, Twitter
  • Predictable shortened URL length

Take a look at the following diagram:

Under the hood, the following things happen in a URL shortening service:

  1. Take the original URL
  2. Apply BASE62 encoding on it; it generates a Shortened URL
  3. Store that URL in the database. Map it to the original URL ([shortened_url: original_url])
  4. Whenever a request comes to the shortened URL, just do an HTTP redirect to the original URL

We will implement a full example in upcoming chapters when we integrate databases to our API server, but before that, though, we should specify the API design documentation.

Take a look at the following table:


      
URL           REST Verb           Action           Success           Failure
/api/v1/new           POST           Create a shortened URL           200           500, 404
/api/v1/:url           GET           Redirect to original URL           301           404
You can use a dummy JSON file/Go map to store the URL for now instead of a database.
主站蜘蛛池模板: 方城县| 连江县| 延寿县| 巫溪县| 兰考县| 吉安县| 抚顺市| 通渭县| 晴隆县| 连城县| 迭部县| 霍山县| 紫金县| 博湖县| 五莲县| 土默特左旗| 远安县| 油尖旺区| 古蔺县| 定州市| 巨鹿县| 招远市| 龙山县| 玉田县| 呼和浩特市| 平武县| 金川县| 廉江市| 孟村| 苏尼特右旗| 江阴市| 广丰县| 绍兴市| 黑龙江省| 纳雍县| 郓城县| 张家口市| 苏尼特右旗| 涞源县| 青海省| 吉安县|