Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

http-router

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

http-router

A simple router system for HTTP applications

  • 5.0.8
  • PyPI
  • Socket score

Maintainers
1

HTTP Router ###########

.. _description:

http-router -- A simple router for HTTP applications

The library is not a HTTP framework. It's an utilite to build the frameworks. The main goal of the library to bind targets to http routes and match them.

.. _badges:

.. image:: https://github.com/klen/http-router/workflows/tests/badge.svg :target: https://github.com/klen/http-router/actions :alt: Tests Status

.. image:: https://img.shields.io/pypi/v/http-router :target: https://pypi.org/project/http-router/ :alt: PYPI Version

.. image:: https://img.shields.io/pypi/pyversions/http-router :target: https://pypi.org/project/http-router/ :alt: Python Versions

.. _contents:

.. contents::

.. _requirements:

Requirements

  • python 3.9, 3.10, 3.11, 3.12, 3.13, pypy3

.. _installation:

Installation

http-router should be installed using pip: ::

pip install http-router

Usage

Create a router:

.. code:: python

from http_router import Router


# Initialize the router
router = Router(trim_last_slash=True)

Define routes:

.. code:: python

@router.route('/simple')
def simple():
    return 'result from the fn'

Call the router with HTTP path and optionally method to get a match result.

.. code:: python

match = router('/simple', method='GET') assert match, 'HTTP path is ok' assert match.target is simple

The router supports regex objects too:

.. code:: python

import re

@router.route(re.compile(r'/regexp/\w{3}-\d{2}/?'))
def regex():
    return 'result from the fn'

But the lib has a simplier interface for the dynamic routes:

.. code:: python

@router.route('/users/{username}')
def users():
    return 'result from the fn'

By default this will capture characters up to the end of the path or the next /.

Optionally, you can use a converter to specify the type of the argument like {variable_name:converter}.

Converter types:

========= ==================================== str (default) accepts any text without a slash int accepts positive integers float accepts positive floating point values path like string but also accepts slashes uuid accepts UUID strings ========= ====================================

Convertors are used by prefixing them with a colon, like so:

.. code:: python

@router.route('/orders/{order_id:int}')
def orders():
    return 'result from the fn'

Any unknown convertor will be parsed as a regex:

.. code:: python

@router.route('/orders/{order_id:\d{3}}')
def orders():
    return 'result from the fn'

Multiple paths are supported as well:

.. code:: python

@router.route('/', '/home')
def index():
    return 'index'

Handling HTTP methods:

.. code:: python

@router.route('/only-post', methods=['POST'])
def only_post():
    return 'only-post'

Submounting routes:

.. code:: python

subrouter = Router()

@subrouter.route('/items/{item}') def items(): pass

router = Router()
router.route('/api')(subrouter)

match = router('/api/items/12', method='GET') assert match, 'HTTP path is ok' assert match.target is items assert match.params == {"item": "12"}

.. _bugtracker:

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:

Contributing

Development of the project happens at: https://github.com/klen/http-router

.. _license:

License

Licensed under a MIT license_.

.. _links:

.. _klen: https://github.com/klen .. _MIT license: http://opensource.org/licenses/MIT

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc