mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 16:12:08 +02:00
37 lines
1.1 KiB
ReStructuredText
37 lines
1.1 KiB
ReStructuredText
To use DataModel instances as request and/or response of a REST service endpoint
|
|
you must:
|
|
|
|
* Define your DataModel objects;
|
|
* Provides the information required to the ``odoo.addons.base_rest.restapi.method`` decorator;
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
from marshmallow import fields
|
|
|
|
from odoo.addons.base_rest import restapi
|
|
from odoo.addons.component.core import Component
|
|
from odoo.addons.datamodel.core import Datamodel
|
|
|
|
class PingMessage(Datamodel):
|
|
_name = "ping.message"
|
|
|
|
message = fields.String(required=True, allow_none=False)
|
|
|
|
|
|
class PingService(Component):
|
|
_inherit = 'base.rest.service'
|
|
_name = 'ping.service'
|
|
_usage = 'ping'
|
|
_collection = 'my_module.services'
|
|
|
|
|
|
@restapi.method(
|
|
[(["/pong"], "GET")],
|
|
input_param=restapi.Datamodel("ping.message"),
|
|
output_param=restapi.Datamodel("ping.message"),
|
|
auth="public",
|
|
)
|
|
def pong(self, ping_message):
|
|
PingMessage = self.env.datamodels["ping.message"]
|
|
return PingMessage(message = "Received: " + ping_message.message)
|