基础GraphQL/GraphiQL控制器
项目描述
此模块允许创建 GraphQL 端点。本身并不执行任何操作,必须由开发人员使用 graphene 创建GraphQL模式和解析器,并通过控制器公开它们。在 graphql_demo 模块中有一个示例。
目录
用法
要使用此模块,您需要
创建您的graphene模式
创建控制器以公开您的GraphQL端点,以及可选的GraphiQL IDE。
此模块不尝试公开整个Odoo对象模型。这可能是基于此模块的另一个模块的目的。然而,我们认为公开针对每个客户的具体经过良好测试的端点是更好的,这样可以减少耦合,并确切知道在升级Odoo时需要测试的内容。
要开始使用此模块,我们建议以下方法
学习 GraphQL基础知识
学习 graphene,用于创建GraphQL模式和解析器的Python库。
检查此存储库中的 graphql_demo 模块,复制它,根据您的需求(路由、认证方法)调整控制器。
开始构建您自己的模式和解析器。
构建您的模式
可以使用原生graphene类型构建模式。提供了一个 odoo.addons.graphql_base.types.OdooObjectType 作为便利。它是一个具有默认属性解析器的graphene ObjectType,
将False转换为None(布尔类型除外),以避免Odoo的奇怪False字符串被渲染为json "false"';
将用户时区添加到DateTime字段;
如果缺少属性,则引发错误以避免字段名称输入错误。
创建GraphQL控制器
该模块提供了一个odoo.addons.graphql_base.GraphQLControllerMixin类,以帮助您构建提供GraphiQL和/或GraphQL端点的GraphQL控制器。
from odoo import http
from odoo.addons.graphql_base import GraphQLControllerMixin
from ..schema import schema
class GraphQLController(http.Controller, GraphQLControllerMixin):
# The GraphiQL route, providing an IDE for developers
@http.route("/graphiql/demo", auth="user")
def graphiql(self, **kwargs):
return self._handle_graphiql_request(schema)
# Optional monkey patch, needed to accept application/json GraphQL
# requests. If you only need to accept GET requests or POST
# with application/x-www-form-urlencoded content,
# this is not necessary.
GraphQLControllerMixin.patch_for_json("^/graphql/demo/?$")
# The graphql route, for applications.
# Note csrf=False: you may want to apply extra security
# (such as origin restrictions) to this route.
@http.route("/graphql/demo", auth="user", csrf=False)
def graphql(self, **kwargs):
return self._handle_graphql_request(schema)
错误跟踪器
问题在GitHub Issues上跟踪。如有问题,请检查是否已报告您的问题。如果是您首先发现,请通过提供详细且受欢迎的反馈来帮助我们解决这个问题。
请不要直接联系贡献者寻求支持或技术问题的帮助。
致谢
维护者
该模块由OCA维护。
OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。
当前维护者
该模块是GitHub上OCA/rest-framework项目的一部分。
欢迎您贡献力量。有关如何贡献的更多信息,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值用于odoo13_addon_graphql_base-13.0.1.0.1.dev6-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 684aa1a928fb3eb9b07ccd045c2c04398f7ec5fed06d76ca5f21ab1ea071b0cc |
|
MD5 | 0f79196890aed00af77b2114f7577763 |
|
BLAKE2b-256 | b9c09a640dc855e61e9321e3dc9d351cdc4512057e67aa29e0a8899878807f52 |