python-flask-template icon indicating copy to clipboard operation
python-flask-template copied to clipboard

Pass the path route argument to the handler

Open NicolaiSchmid opened this issue 5 years ago • 6 comments

My actions before raising this issue

I'd like to suggest passing the path argument to the handler as a second argument, as it would prove quite valuable to my application I'm not really familiar with Flask however and I might be able to access the argument already via a property on the request object. If that's the case, please let me know!

Context

The function I'm developing returns a list of attributes for a username. I think the natural implementation would be to make a GET request to /username. It would be great if I could reuse it

NicolaiSchmid avatar Sep 25 '20 14:09 NicolaiSchmid

The path should already be on the request object, request.path https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data

For example:

➜  test-flask-tmpl-32 curl localhost:8080/here/i/am
/here/i/am

and my handler looks like

from flask import request


def handle(req):
    """handle a request to the function
    Args:
        req (str): request body
    """


    return request.path

LucasRoesler avatar Sep 25 '20 15:09 LucasRoesler

Yes, but it isn't parsed.

NicolaiSchmid avatar Sep 25 '20 17:09 NicolaiSchmid

What do you mean by parsed?

LucasRoesler avatar Sep 25 '20 17:09 LucasRoesler

Well, if the route is /username, then the value of path (the function argument, not the property on request) will only be username and not /username

NicolaiSchmid avatar Sep 25 '20 17:09 NicolaiSchmid

Perhaps you could share anymore concrete example of what you want to do? Even if we passed the path as a second value, it would just be the same value as request.path.

What additional parsing should it do? Perhaps there is an alternative template for your use case or you can simply fork the template to add your additions? You can specify a fork or a template pretty easily in the stack yaml https://docs.openfaas.com/reference/yaml/#templates

LucasRoesler avatar Sep 25 '20 17:09 LucasRoesler

@NicolaiSchmid i think parsing the path is outside the scope of this template. The path is easily accessible, as shown above.

I would recommend possibly forking and adding the required parsing into a custom template

LucasRoesler avatar Sep 26 '20 16:09 LucasRoesler