A custom URL shortening app for Django with API.
-
Add
urlshortening
app to yourINSTALLED_APPS
and domigrate
-
Wire up the redirect view by adding to your URLconf
('^linkshortening/', include('urlshortening.urls'))
-
Add settings (more about parameters further)
INITIAL_URL_LEN = 6 RETRY_COUNT = 5 SHORT_URL_PATH = 'http://example.com/short-prefix/' REDIRECT_PREFIX = 'r'
-
Now you can use API to make short links
POST linkshortening/short/
With json data
{"full_url": "http://example.com/a/b/c/d/e"}
And get response
{"data": { "short_id": "123456", "short_url_path": "http://example.com/short-prefix/" }, "error": ""}
-
You could also use
urlshortening
right from codefrom urlshortening.models import get_short_url, invalidate_url, get_full_url
url = "http://example.com/a/b/c/d/e" short_url = get_short_url(url) # Url object print(short_url.short_id) # id for short url
full_url = get_full_url(short_url.short_id) # Url object print(full_url.url) # "http://example.com/a/b/c/d/e"
# You could also invalidate url invalidate_url(full_url.short_id)
Get short link
-
URL
/short/
-
Method:
POST
-
Data Params
- full_url
-
Success Response:
- Code: 200
Content:{ data: { "short_url_path": "000001" }, error: "" }
- Code: 200
-
Error Response:
-
Code: 400
Content:{ error : "full_url is empty" }
-
Code: 400
Content:{ error : "full_url is too long" }
-
Get full link
-
URL
/expand/:short_id/
-
Method:
GET
-
URL Params
short_id=[string]
-
Success Response:
- Code: 200
Content:{ error : "", data: { full_url: "http://example.com/to-000001" }}
- Code: 200
-
Error Response:
-
Code: 404
Content:{ error : "Link is expired" }
-
Code: 404
Content:{ error : "Url doesn\'t exist" }
-
Get redirect
-
URL
/REDIRECT_PREFIX/expand/:short_id/
-
Method:
GET
-
URL Params
short_id=[string]
-
Success Response:
- Code: 302
- Code: 302
-
Error Response:
-
Code: 404
Content:{ error : "Link is expired" }
-
Code: 404
Content:{ error : "Url doesn\'t exist" }
-
Invalidate url
-
URL
/invalidate/
-
Method:
POST
-
Data Params
- short_id
-
Success Response:
- Code: 200
Content:{ error : "", data: { "short_id": "000001", "invalidated": "true" } }
- Code: 200
-
Error Response:
-
Code: 400
Content:{ error : "short_id is empty" }
-
Code: 400
Content:{ error : "Link is already expired" }
-
Code: 404
Content:{ error : "Url doesn\'t exist" }
-
Available settings are:
-
INITIAL_URL_LEN
Initial length of short id for url. Once you get more short id's than is possible in all combinations of
INITIAL_URL_LEN
symbols it will increase by one -
RETRY_COUNT
How many times do we to check before increasing
INITIAL_URL_LEN
. -
SHORT_URL_PATH
Url that will be returned with
short_id
onPOST linkshortening/short/
request. It might help you to construct full url. -
REDIRECT_PREFIX
Select prefix to use redirect links. For example
REDIRECT_PREFIX="r"
and we get redirect links with format/r/expand/{short_id}/