コンテンツへスキップ
メニュー
この質問にフラグが付けられました
8 返信
15695 ビュー

I had heard somewhere that there were plans of implementing a RESTful API directly into Odoo, without the need for modules that translate between HTTP and XML-RPC. Unfortunately I cannot seem to remember where I heard this, perhaps it was something that came out of OpenDays? So:

  1. Is a RESTful API planned to be included into Odoo?
  2. If so, are there any estimates of when this feature might be included?
アバター
破棄

Are you sure that this works? In my experience Odoo will raise an Exception if you try to return JSON-type responses from an HTTP-type URL (the type of the URL defaults to 'http'). If you've tested this and it works then that's great, though I am a little disappointed that we would have to roll our own REST API.

check my updated answer

最善の回答

So does this mean there is are no plans for RESTful APIs to be supported natively?  Is so that is a little disappointing to hear.

アバター
破棄
最善の回答

Hello Atte Isopuro,

We can use web controllers in Odoo to build REST API for synchronizing odoo with other application.

Agenda is to fetch partner(customer) ids

Steps as follows :

1. Create new file in controller directory and add your code-

###############this is for GET request##########################

class my_api_class(openerp.http.Controller):

@route("/get_partner/<name>/", auth='none')

def get_partner(self,name):

'''Get list of partners ids with matching name '''

if request.httprequest.method=='GET':

partner_obj = request.env['res.partner']

partner_ids_list=partner_obj.search(request.cr,1,[('name','=',name)])

return str(partner_ids_list)

return str('NOT A GET REQUEST')

##########################this is for POST request######################

@route("/insert_partner_data/", auth='none')

def create_partner(self,**vals):

''' create new partner '''

import ipdb;ipdb.set_trace()

partner_obj = request.env['res.partner']

###check if post request###

if request.httprequest.method=='POST' :

####get headers##########

header=request.httprequest.headers

partner_ids_list=partner_obj.create(request.cr,1,**vals)

return str(partner_ids_list)

2. Restart odoo server and hit below URL on browser

#########PYTHON SCRIPT TO CALL REST API#######

import request,json

##get request#####

url_for_get='http://localhost:8069/get_partner/odoopvtltd

resonse=request.get(url_for_get)

###POST request#####

url_post='http://localhost:8069/insert_partner_data'

data_to_post={'name':CNPltd,'email':'test@test.com'}

headers={'key':'value'}

response=requests.post(url_post,data_to_post,headers=headers)


アバター
破棄
著作者

Does this also correctly set response headers?

Yes ... header=request.httprequest.headers Also check my update answer .I covered both GET and POST request

how can i contact you atte isoputo

最善の回答

How do you do this ? help pls

アバター
破棄
関連投稿 返信 ビュー 活動
0
3月 25
1225
0
1月 25
3285
1
8月 23
14587
1
8月 23
13241
1
7月 23
10247