Found the answer here:
https://stackoverflow.com/questions/37806801/can-not-post-data-via-ajax-to-web2py-rest-api-possible-cors-issue
def api():
*from gluon.serializers import json*
response.view = 'generic.'+request.extension
def GET(*args,**vars):
patterns = 'auto'
parser = db.parse_as_rest(patterns,args,vars)
if parser.status == 200:
return dict(content=parser.response)
else:
raise HTTP(parser.status,parser.error)
def POST(table_name,**vars):
#return db[table_name].validate_and_insert(**vars)
#data = gluon.contrib.simplejson.loads(request.body.read())
*return json(db[table_name].validate_and_insert(**vars))*
return dict()
def PUT(table_name,record_id,**vars):
return db(db[table_name]._id==record_id).update(**vars)
def DELETE(table_name,record_id):
return db(db[table_name]._id==record_id).delete()
def OPTIONS(*args,**vars):
print "OPTION called"
return True
return dict(GET=GET,POST=POST,PUT=PUT,DELETE=DELETE,OPTIONS=OPTIONS)
On Tuesday, 18 February 2020 11:47:22 UTC-8, Kevin Keller wrote:
>
> I didnt know I need to post the data as form data.
>
> Now it works.
>
> How I can post a JSON payload instead and use that payload for
> insert_and_validate?
>
> I tried this:
>
> def POST(table_name,**vars):
> import json
> data=json.loads(request.body.read())
> data=json.dumps(data)
> return dict(db[table_name].validate_and_insert(data))
>
> On Tuesday, 18 February 2020 11:02:20 UTC-8, Kevin Keller wrote:
>>
>> Even when I manually try to convert the post data I get the error:
>>
>> def POST(table_name,**vars):
>> restdata=request.vars
>>
>> return
>> dict(db[table_name].validate_and_insert(restdata.decode("utf-8")))
>>
>>
>> On Tuesday, 18 February 2020 10:01:14 UTC-8, Kevin Keller wrote:
>>>
>>> When creating a simple rest api with web2py:
>>>
>>> @request.restful()
>>> def api():
>>>
>>> def GET(*args, **vars):
>>> parser=db.parse_as_rest('auto',args,vars)
>>> return dict(content=parser.response)
>>>
>>> def POST(table_name,**vars):
>>> return dict(db[table_name].validate_and_insert(**vars))
>>>
>>> return locals()
>>>
>>> I can get access via rest api to any table but auth_users.
>>>
>>> Is there a way I can enable this?
>>>
>>> I would like to provision new users via rest api to my web2py app.
>>>
>>> Authentication is done via external IDP via OIDC.
>>>
>>> So I basically just need the firstname, lastname and email to be
>>> provisioned via rest.
>>>
>>> Authentication to provision is at the moment an after thought.
>>>
>>> I just need to get this working asap.
>>>
>>> Thank you!
>>>
>>>
>>>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/9dca454e-fdc6-47b2-aecb-10b7073b2467%40googlegroups.com.