Skip to main content

Extremely Stupid Simple, Blazing Fast, Get Out of your way immediately Microframework for building Python Web Applications.

Reason this release was yanked:

Non-Production release

Project description


Routerling

A new born baby router on it's way to being a web development platform. Routerling is a router multiplexer built with 1 goal in mind.

  • Make it stupid simple to build high performance web applications

How?

Following the unix philosophy of be the master of one thing and one thing only - Routerling has only ONE API you need to learn - Router. The API is also deliberately made consistent across the 3 different supported languages [Golang, Python, Typescript/JavaScript]. See Similarities

 

Python

from routerling import Context, HttpRequest, ResponseWriter, Router
from logging import log

def get_customer_orders(r: HttpRequest, w: ReponseWriter, s: State):
    w.headers = "go-go-gadget", ""
    w.body = '{customer: {customer_id}, orders: []}'.format(r.params.get('id'))

def change_headers(r: HttpRequest, w: ResponseWriter, s: State):
    w.headers = "go-go-gadget", "i was changed after..."

def create_customer(r: HttpRequest, w: ResponseWriter, s: State):
    print(r.body)
    w.status = 201
    w.body = '{id: 13}'


# register functions to routes
router.BEFORE('/*', lambda req, res, state: print('will run before all routes are handled'))
router.AFTER('/v1/customers/*', change_headers)
router.GET('/v1/customers/:id/orders', get_customer_orders)
router.GET('/v1/customers/:id', lambda req, res, state: log(2, state.abcxyz_variable))
router.POST('/v1/customers', create_customer)

Serve your application

uvicorn app:router

 

Request Object

  • request.body

    Body/payload of request if it exists. You can use any XML, JSON, CSV etc. library you prefer to parse r.body as you like.

    # r.body: str
    body: str = r.body
    
  • request.headers header = r.headers.get('header-name')

    All headers sent with the request.

    # r.headers: dict
    header = r.headers.get('content-type')
    
  • request.params param = r.params.get('param-name')

    Dictionary containing parts of the url that matched your route parameters i.e. /customers/:id/orders will return {'id': 45} for url /customers/45/orders.

    body: str = r.body
    

 

Response Object

  • response.abort

    Signals to routerling that you want to abort a request and ignore all GET, POST, PUT etc. handlers including all AFTER or BEFORE hooks from executing. The payload given to abort is used as the response body. Only calling w.abort() will not end function execution. You have to explicitly return from the request handler after using w.abort().

    w.abort('This is the body/payload i want to abort with')
    return
    
  • response.body

    Used to set payload/body to be sent back to the client. Returning data from a handler function does not do anything and is not used by routerling. To send something back to the client use w.body.

    w.body = b'my body'
    
  • response.headers

    Used to set headers to be sent back to the client.

    w.headers = "Content-Type", "application/json"
    w.headers = ["Authorization", "Bearer myToken"]
    

 

Context Object

Documentation coming soon

 

 

Socket Connections

Documentation coming soon

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

routerling-0.1.6.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

routerling-0.1.6-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file routerling-0.1.6.tar.gz.

File metadata

  • Download URL: routerling-0.1.6.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.9.2 Darwin/20.3.0

File hashes

Hashes for routerling-0.1.6.tar.gz
Algorithm Hash digest
SHA256 527c3d7c9537b1fb023d4ee7bc7599a570c8ff81928a75b5b79cfa1229d00fc7
MD5 27c533d830c02a935f0ee193df4f4107
BLAKE2b-256 75113bb032ef3d982def55676c96d39b7ad540b9f19974b68b2d2ff99cb03401

See more details on using hashes here.

File details

Details for the file routerling-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: routerling-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.5 CPython/3.9.2 Darwin/20.3.0

File hashes

Hashes for routerling-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 e655de14d49fd737d9d8d4e1449f545c65475a56142da0a58956c5b2cd751f61
MD5 de3405d8d3057a975d20831171b9d1f3
BLAKE2b-256 b1e029aa9d8816fe35ea08d129d9524bae56bfde24e791dc6cfc1d666b786acf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page