文章目录
OCA/rest-framework
https://github.com/OCA/rest-framework/tree/13.0
rest-framework和odoo的集成
OCA/rest-framework这个rest-framework框架可以帮助我们在odoo框架的基础上快速开发符合restful规范的接口
1 全部模块如下
以下这些模块文件下都有对应的readme文件以及usages文件可以看
- base_rest
- base_rest_datamodel
- base_rest_demo
- datamodel
- graphql_base
- graphql_demo
- rest_log
2 Base Rest分析
这个addon为odoo提供了开发高级rest api的基础
This addon provides the basis to develop high level REST APIs for Odoo.
least 2 classes
至少有两个类需要继承
- Component->providing the bussiness logic of the service
- Controller->register the service
- model中继承Component的类有几个类参数需要指定,一些用法_usage,以及名字_collection
- controller中继承main.RestController的类下也有几个参数需要制定,_root_path = 'xxx’指定了展示的基础路由是什么,以及_collection_name
方案一
1 首先在controller中定义有哪些路由,然后调用self._process_method()方法跳转到model中的Component类下的对应的方法
2 其中可以对数据做一些验证,在model中指定方法前缀为_validator_xxx的方法对xxx方法进行参数类型指定
方案二
1 使用restapi.method装饰器,在model中可以显示的暴露方法对应的路由方法是啥以及可以在装饰器参数中指定待装饰的方法对应的数据validator方法是啥。
2 还可以导入Datamodel库以及marshmallow库下的fields,对数据进行验证
3 Base Rest Datamodel
This addon allows you to use DataModel objects as params and/or response with your REST API methods.
Datamodel是可以用来被继承以及搭配marshmallow下的fields对象去对数据做一些验证
Usage
1 在model中继承Datamodel模型并_name重新生成新模型,搭配fields,可以被用作对request数据做验证。
2 同上再生成一个新模型,可以对response数据做验证。
3 在restapi.method装饰器中指定参数input_param和output_param为上述两个模型即可。
4 Datamodel
This addon allows you to define simple data model supporting serialization/deserialization to/from json
Datamodel are Marshmallow model classes that can be inherited as Odoo Models.
Usage
datamodel可以被继承 以及可以在odoo的model class 下通过env辅助属性被调用,以及在datamodel下 也可以通过env属性去调用odoo的model
5 graphql_base、graphql_demo
这两个插件模块目前没有进行使用
GraphQL是一个用于API的查询语言
This modules enables the creation of GraphQL endpoints. In itself, it does nothing and must be used by a developer to create the GraphQL schema and resolvers using graphene, and expose them through a controller. An example is available in the graphql_demo
module.
6 rest_log
rest 日志。可以用于记录错误、请求细节、响应细节。