ehm? recent web2py should parse application/json POSTs just fine !?!
On Thursday, July 25, 2013 3:07:02 PM UTC+2, Massimo Di Pierro wrote:
>
> 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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.