currently i'm using this version: 2.4.6-stable+timestamp.2013.04.06.17.37.38
El jueves, 25 de julio de 2013 11:26:07 UTC-3, Niphlod escribió:
>
> 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.