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.