A simple router for HTTP applications
Project description
http-router – A simple router for HTTP applications
Requirements
python >= 3.7
Installation
http-router should be installed using pip:
pip install http-router
Usage
from http_router import Router
# Initialize the router
router = Router(trim_last_slash=True)
# Plain path
# ----------
@router.route('/simple')
def simple():
return 'simple'
# Get a binded function and options by the given path
fn, path_params = router('/simple')
print(fn, path_params)
#
# >> <function simple>, {}
#
assert fn() == 'simple'
# The Router will raise a Router.NotFound for an unknown path
try:
fn, path_params = router('/unknown')
except router.NotFound as exc:
print("%r" % exc)
#
# >> NotFound('/unknown', 'GET')
#
# Multiple paths are supported as well
# ------------------------------------
@router.route('/', '/home')
def index():
return 'index'
print(router('/'))
#
# >> <function index>, {}
#
print(router('/home'))
#
# >> <function index>, {}
#
# Bind HTTP Methods
# -----------------
@router.route('/only-post', methods=['POST'])
def only_post():
return 'only-post'
# The Router will raise a Router.MethodNotAllowed for an unsupported method
try:
print(router('/only-post', method='GET'))
except router.MethodNotAllowed as exc:
print("%r" % exc)
#
# >> MethodNotAllowed('/only-post', 'GET')
#
print(router('/only-post', method='POST'))
#
# >> <function only_post>, {}
#
# Regex Expressions are supported
# -------------------------------
@router.route('/regex(/opt)?')
def optional():
return 'opt'
print(router('/regex', method='POST'))
#
# >> <function optional>, {}
#
print(router('/regex/opt', method='POST'))
#
# >> <function optional>, {}
#
# Dynamic routes are here
# -----------------------
@router.route('/order1/{id}')
def order1(id=None):
return 'order-%s' % id
print(router('/order1/42'))
#
# >> <function order1>, {'id': '42'}
#
# Dynamic routes with regex
# -------------------------
@router.route(r'/order2/{ id:\d{3} }')
def order2(id=None):
return 'order-%s' % id
print(router('/order2/100'))
#
# >> <function order2>, {'id': '100'}
#
try:
print(router('/order2/03'))
except router.NotFound:
pass
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/http-router/issues
Contributing
Development of the project happens at: https://github.com/klen/http-router
License
Licensed under a MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file http_router-0.5.1-py3-none-any.whl
.
File metadata
- Download URL: http_router-0.5.1-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25e3b183f1b336945cb456cbd680a60d920d976fbbe632a1614fb7ebc4448b63 |
|
MD5 | b607ab7f619c965de2d77a125026ac7d |
|
BLAKE2b-256 | dd34319a1460cf3ff7811a7c6f410f6b1ff3180bb7a9860c98f467f54c353d4a |