Skip to content

Add user-defined converters to routing #231

@em92

Description

@em92

To solve application task in #230 I use my own defined convertor:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import starlette.convertors as conv

class UnderscoreConvertor(conv.Convertor):
    regex = ".*"

    def convert(self, value: str) -> str:
        return "_" + value

    def to_string(self, value: str) -> str:
        return value[1:]

conv.CONVERTOR_TYPES['underscore'] = UnderscoreConvertor()



from starlette.applications import Starlette

from starlette.responses import PlainTextResponse

import uvicorn

app = Starlette()

@app.route("/test/{username:underscore}")
def http_test(request):
    username = request.path_params['username']
    return PlainTextResponse(username + "\n")

if __name__ == '__main__':
    uvicorn.run(app, host='0.0.0.0', port=8080)

So feature request is allowing user-defined converters in more acceptable way. Something like:
starlette.convertors.add("underscore", UnderscoreConverter())

Metadata

Metadata

Assignees

No one assigned

    Labels

    clean upRefinement to existing functionality

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions