thanks, that's right! now it works. Thanks for the hint ;-) El jueves, 25 de julio de 2013 10:07:02 UTC-3, Massimo Di Pierro escribió: > > The problem is that angular sends the request variables as json in body > and not urlencoded (an expected) So you must replace > > def POST(table_name, **vars): > print(vars) > > with > > def POST(table_name): > vars = json.loads(request.body.read()) > print(vars) > > On Tuesday, 23 July 2013 21:37:16 UTC-5, Franco wrote: >> >> Anybody? >> >> El domingo, 21 de julio de 2013 14:46:08 UTC-3, Franco escribió: >>> >>> Greetings everyone, >>> I've been using request.restful >>> to provide an restful interface to my angularjs app, >>> i tried to post data from the angularjs app and it works, it sends the >>> data but in the POST method i've got an empty dictionary, here is my code >>> and some data logs: >>> >>> default controller >>> @request.restful() >>> def api(): >>> response.view = 'generic.json' >>> def GET(table_name, id=None): >>> if table_name in db: >>> table = db[table_name] >>> if id == None: >>> query = (table.id > 0) >>> else: >>> try: >>> id = int(id or 0) >>> except: >>> id = 0 >>> query = (table.id == id) >>> return {table_name : db(query).select()} >>> def POST(table_name, **vars): >>> print(vars) >>> return locals() >>> >>> angular code used to post data: >>> $http.post('http://127.0.0.1:8000/angularjs/default/api/person/', item). >>> success(function(data) { >>> console.log('POST: '+ item.first_name +' Result: '+ data); >>> }); >>> >>> chrome network log: >>> >>>> >>>> 1. Request URL: >>>> http://127.0.0.1:8000/angularjs/default/api/person/ >>>> 2. Request Method: >>>> POST >>>> 3. Status Code: >>>> 200 OK >>>> 4. Request Headersview source >>>> 1. Accept: >>>> application/json, text/plain, */* >>>> 2. Accept-Encoding: >>>> gzip,deflate,sdch >>>> 3. Accept-Language: >>>> es,en-US;q=0.8,en;q=0.6 >>>> 4. Connection: >>>> keep-alive >>>> 5. Content-Length: >>>> 46 >>>> 6. Content-Type: >>>> application/json;charset=UTF-8 >>>> 7. Cookie: >>>> csrftoken=hMi7rvIHaxAu09tX0H8c2SDqmwwgS7Ra; >>>> session_id_admin=127.0.0.1-9ef67e29-1352-4fef-a621-fcc0c3fa9182; >>>> session_id_angularjs=127.0.0.1-9453b1e9-444d-4fe4-8110-9d956bfda316 >>>> 8. Host: >>>> 127.0.0.1:8000 >>>> 9. Origin: >>>> http://127.0.0.1:8000 >>>> 10. Referer: >>>> http://127.0.0.1:8000/angularjs/default/index >>>> 11. User-Agent: >>>> Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, >>>> like Gecko) Chrome/28.0.1500.72 Safari/537.36 >>>> 5. Request Payloadview source >>>> {id:0, first_name:John, last_name:Doe} >>>> 1. first_name: "John" >>>> 2. id: 0 >>>> 3. last_name: "Doe" >>>> 6. Response Headersview source >>>> 1. Cache-Control: >>>> no-store, no-cache, must-revalidate, post-check=0, pre-check=0 >>>> 2. Connection: >>>> keep-alive >>>> 3. Content-Length: >>>> 4 >>>> 4. Content-Type: >>>> text/html; charset=utf-8 >>>> 5. Date: >>>> Sun, 21 Jul 2013 17:38:41 GMT >>>> 6. Expires: >>>> Sun, 21 Jul 2013 17:38:41 GMT >>>> 7. Pragma: >>>> no-cache >>>> 8. Server: >>>> Rocket 1.2.6 Python/2.7.5 >>>> 9. Set-Cookie: >>>> session_id_angularjs=127.0.0.1-9453b1e9-444d-4fe4-8110-9d956bfda316; >>>> Path=/ >>>> 10. X-Powered-By: >>>> web2py >>>> >>>> >>> I made some tests using the "requests" module and it works, so for >>> instance i think that the problem is within the way that angularjs sends >>> the data. >>> >>> Thanks in advance, >>> >>> Franco >>> >>>>
-- --- 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.