Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pass the path route argument to the handler #41

Open
3 tasks done
NicolaiSchmid opened this issue Sep 25, 2020 · 6 comments
Open
3 tasks done

Pass the path route argument to the handler #41

NicolaiSchmid opened this issue Sep 25, 2020 · 6 comments

Comments

@NicolaiSchmid
Copy link

NicolaiSchmid commented Sep 25, 2020

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

@LucasRoesler
Copy link
Member

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

@NicolaiSchmid
Copy link
Author

Yes, but it isn't parsed.

@LucasRoesler
Copy link
Member

What do you mean by parsed?

@NicolaiSchmid
Copy link
Author

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

@LucasRoesler
Copy link
Member

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
Copy link
Member

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants