A custom URL shortening app for Django with API.
-
Add
urlshorteningapp to yourINSTALLED_APPSand 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
urlshorteningright from codefrom urlshortening.models import get_short_url, invalidate_url, get_full_urlurl = "http://example.com/a/b/c/d/e" short_url = get_short_url(url) # Url object print(short_url.short_id) # id for short urlfull_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_LENInitial length of short id for url. Once you get more short id's than is possible in all combinations of
INITIAL_URL_LENsymbols it will increase by one -
RETRY_COUNTHow many times do we to check before increasing
INITIAL_URL_LEN. -
SHORT_URL_PATHUrl that will be returned with
short_idonPOST linkshortening/short/request. It might help you to construct full url. -
REDIRECT_PREFIXSelect prefix to use redirect links. For example
REDIRECT_PREFIX="r"and we get redirect links with format/r/expand/{short_id}/