Hola a todos:
Estoy intentando hacer un controlador que reciba datos en formato JSON, haga cualquier cosa con ellos, y tras esto, devuelva un 200 OK o cualquier respuesta.
De momento éste es el código de mi controlador:
import openerp.http as http
import logging
_logger = logging.getLogger(__name__)
class Controller(http.Controller):
@http.route('/test/result', type='json', auth='public')
def index(self):
_logger.info('HOLA')
return '{"response": "OK"}'
Si ahora me dirijo a la URL
http://localhost:8069/test/result, recibo un error
440 Bad Request: function index at 0x7f04a28>, /test/result: Function declared as capable of handling request of type 'json' but called with a request of type 'http', lo cual tiene sentido porque he puesto que el controlador sea de tipo json, si lo cambio por http, puedo ver claramente {"response": "OK"}.
Si ahora abro una consola de Python y escribo lo siguiente:
>>> import json
>>> data = {'temperature': '24.3'}
>>> data_json = json.dumps(data)
>>> data
{'temperature': '24.3'}
>>> data_json
'{"temperature": "24.3"}'
>>> import requests
>>> r
<Response [404]>
Podéis comprobar que no consigo mi objetivo, que es obtener en la variable "r" el json '{"response": "OK"}'. De hecho ni siquiera entra en el controlador ya que en el log no se muestra "HOLA" cada vez que ejecuto la petición, sólo "GET /test/result HTTP/1.1" 404 -.
He probado a cambiar el tipo de controlador de json a http y a añadirle el parámetro website con valor True por defecto, pero no hay manera, el resultado es el mismo.
¿Alguien sabe qué estoy haciendo mal?