Re: [web2py] Invalid request with special chars in URL
Hello! Sorry for answering myself, but I've been working on this problem without success. This time I've tried with this post: https://groups.google.com/forum/#!msg/web2py/JZSL1R9J-C0/qsZ32kVfhGAJ Following Massimo advise in that post I've done this: This is my Routes.py: #!/usr/bin/python # -*- coding: utf-8 -*- routes_in = (('/myapp/default/public_call/json/public_function_1/$1/$2/$3', '/myapp/default/public_call/json/public_function_1?var1=$1var2=$2var3=$3' ), ('/myapp/default/private_call/json/private_function_1/$1/$2', '/myapp/default/private_call/json/private_function_1?var1=$1var2=$2')) And this is my default.py: ... public_services=Service() private_services=Service() ... def public_call(): return public_services() @auth.requires_login() def private_call(): return private_services() ... @public_services.json def public_function_1(): var1 = request.vars.var1 var2 = request.vars.var2 var3 = request.vars.var3 print var1 print var2 print var3 ... @private_services.json def private_function_1(): var1 = request.vars.var1 var2 = request.vars.var2 print var1 print var2 ... But the output in both cases is None None None and None None What am I doing wrong?? On Thursday, September 5, 2013 9:54:09 PM UTC+2, Wonton wrote: Arrgh! I must be missing something, I'm very sorry :-(. I've tried this: - No changes. The site is working correctly except for the special chars. - I've created in web2py root directory the routes.py file with this content: routes_apps_raw=['myapp'] -I've restarted web2py. - My app is not working anymore. All request are getting an invalid request error. - I've edited routes.py, now it contains: #!/usr/bin/python # -*- coding: utf-8 -*- routes_apps_raw=['myapp'] -I've restarted web2py. - My app is not working yet, all request are invalid. -I've deleted routes.py file. -I've restarted web2py. -My app is working correctly except for the special chars. So, I'm sure I'm doing anythong very wrong. Besides creating the routes.py file, should I change any other thing in my controllers? Thank you very much again! -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [web2py] Invalid request with special chars in URL
On 5 Sep 2013, at 12:11 AM, Wonton rferb...@gmail.com wrote: Hello Marcio, First of all, thank you so much for your answer, I haven thought on that possibility and it's very interesting. However, I have a huge number of services and I often test them manually, so I would like to maintain the URLs as readable as possible. I would like to try first with the routes.py solution, disabling the args validation for my app. But I will keep in mind your solution. Did you restart web2py after changing routes.py? routes_apps_raw ought to do what you want. When your app is in the routes_apps_raw list, your args string (eg 'json/public_function/...') is in request.raw_args (as usual) and request.args is None. It's then the responsibility of your app (and you can do this in your model if you like) to validate and parse request.raw_args, and (if you want to) put the results in request.args as a List() object. Putting routes.py in the wrong place (it should be in the web2py root) or changing it without restarting is the most common reason for trouble with routes.py. (As an alternative you can use the parametric router and specify your own validation regex for args: args_match.) Kind regards! On Thursday, September 5, 2013 3:50:17 AM UTC+2, Marcio Andrey Oliveira wrote: Can't you send encoded parameters (say in Bas64 or hexadecimal) and decode them inside the methods? Regards. On Wednesday, September 4, 2013 8:24:26 PM UTC-3, Wonton wrote: Hello everyone! I've developed a web2py backend which is given me problems with special chars in URLs. I'm a newbie with web2py so maybe I'm missing something very easy, sorry if that is the case ;-). These are the details of my app. - I have no routes.py file. - In controllers/default.py I have this: ... public_services=Service() private_services=Service() ... def public_call(): return public_services() @auth.requires_login() def private_call(): return private_services() ... @public_services.json def public_function_1(var1, var2, var3): ... @private_services.json def private_function_1(var1, var2): ... - I call these methods this way: http://mydomain/myapp/default/public_call/json/public_function_1/var1/var2/var3 http://mydomain/myapp/default/private_call/json/private_function_1/var1/var2 - Everything is working except if my URL contains special chars, (var1, var2 or var3 can contain 'ñ' or accents, coded with %...) then I get an invalid request error. - After reading all posts related to this issue I'm a bit lost, sorry. I've tried to create a routes.py and the only line inside it is this: routes_apps_raw=['myapp'] But obviously this is not enough because I have the same problem yet. Besides this, I don't understand the request.raw_args thing, am I supposed to do anything with that? I can't see any request.raw_args in my code. Thank you very much and kind regards! -- -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [web2py] Invalid request with special chars in URL
Arrgh! I must be missing something, I'm very sorry :-(. I've tried this: - No changes. The site is working correctly except for the special chars. - I've created in web2py root directory the routes.py file with this content: routes_apps_raw=['myapp'] -I've restarted web2py. - My app is not working anymore. All request are getting an invalid request error. - I've edited routes.py, now it contains: #!/usr/bin/python # -*- coding: utf-8 -*- routes_apps_raw=['myapp'] -I've restarted web2py. - My app is not working yet, all request are invalid. -I've deleted routes.py file. -I've restarted web2py. -My app is working correctly except for the special chars. So, I'm sure I'm doing anythong very wrong. Besides creating the routes.py file, should I change any other thing in my controllers? Thank you very much again! On Thursday, September 5, 2013 4:45:11 PM UTC+2, Jonathan Lundell wrote: On 5 Sep 2013, at 12:11 AM, Wonton rfer...@gmail.com javascript: wrote: Hello Marcio, First of all, thank you so much for your answer, I haven thought on that possibility and it's very interesting. However, I have a huge number of services and I often test them manually, so I would like to maintain the URLs as readable as possible. I would like to try first with the routes.py solution, disabling the args validation for my app. But I will keep in mind your solution. Did you restart web2py after changing routes.py? routes_apps_raw ought to do what you want. When your app is in the routes_apps_raw list, your args string (eg 'json/public_function/...') is in request.raw_args (as usual) and request.args is None. It's then the responsibility of your app (and you can do this in your model if you like) to validate and parse request.raw_args, and (if you want to) put the results in request.args as a List() object. Putting routes.py in the wrong place (it should be in the web2py root) or changing it without restarting is the most common reason for trouble with routes.py. (As an alternative you can use the parametric router and specify your own validation regex for args: args_match.) Kind regards! On Thursday, September 5, 2013 3:50:17 AM UTC+2, Marcio Andrey Oliveira wrote: Can't you send encoded parameters (say in Bas64 or hexadecimal) and decode them inside the methods? Regards. On Wednesday, September 4, 2013 8:24:26 PM UTC-3, Wonton wrote: Hello everyone! I've developed a web2py backend which is given me problems with special chars in URLs. I'm a newbie with web2py so maybe I'm missing something very easy, sorry if that is the case ;-). These are the details of my app. - I have no routes.py file. - In controllers/default.py I have this: ... public_services=Service() private_services=Service() ... def public_call(): return public_services() @auth.requires_login() def private_call(): return private_services() ... @public_services.json def public_function_1(var1, var2, var3): ... @private_services.json def private_function_1(var1, var2): ... - I call these methods this way: http://mydomain/myapp/default/public_call/json/ public_function_1/var1/var2/var3 http://mydomain/myapp/default/private_call/json/ private_function_1/var1/var2 - Everything is working except if my URL contains special chars, (var1, var2 or var3 can contain 'ñ' or accents, coded with %...) then I get an invalid request error. - After reading all posts related to this issue I'm a bit lost, sorry. I've tried to create a routes.py and the only line inside it is this: routes_apps_raw=['myapp'] But obviously this is not enough because I have the same problem yet. Besides this, I don't understand the request.raw_args thing, am I supposed to do anything with that? I can't see any request.raw_args in my code. Thank you very much and kind regards! -- -- --- You received this message because you are subscribed to the Google Groups web2py-users group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.