基本GraphQL/GraphiQL控制器
项目描述
此模块启用创建GraphQL端点。本身它不做任何事情,必须由开发者使用graphene创建GraphQL模式和解析器,并通过控制器公开它们。示例可在graphql_demo模块中找到。
目录
使用方法
要使用此模块,您需要
创建您的graphene模式
创建控制器以公开您的GraphQL端点,以及可选的GraphiQL IDE。
此模块不试图公开整个Odoo对象模型。这可能是基于此模块的另一个模块的目的。然而,我们认为公开每个客户特定且经过良好测试的端点更为可取,这样可以在升级Odoo时减少耦合,并精确地知道需要公开什么以及需要测试什么。
要开始使用此模块,我们建议以下方法
学习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。
项目详情
散列 用于 odoo14_addon_graphql_base-14.0.1.0.1.dev3-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | f9a1da978404be0e519dfce76de6bb1abea4bf7f99a3fb1547ee4a487178f94c |
|
MD5 | 0fcb9bcc1dfd5e04ac0ba064e009bde3 |
|
BLAKE2b-256 | 6b434e3fcd60888a60d1014bec961fc71cfd12c274d3bde46690afb8b9d69694 |