django graphql的持久化查询
django-graphql-persist的Python项目详细描述
persistend查询用于Django GraphQL
依赖关系
- django≥1.11
- python≥3.4
安装
从pypi安装最后一个稳定版本。
pip install django-graphql-persist
在middleware设置中包括PersistMiddlewaremiddleware:
MIDDLEWARE=[...'graphql_persist.middleware.PersistMiddleware',...]
装载机
django graphql persist根据您的DEFAULT_LOADER_CLASSES变量,在多个位置搜索文档目录。
默认情况下,django graphql persist使用这些文档加载程序:
- appdirectoriesloader
从文件系统上的django应用程序加载文档。对于INSTALLED_APPS中的每个应用程序,加载程序将查找由APP_DOCUMENT_DIR变量定义的documents/子目录。
- filesystemloader
根据DOCUMENTS_DIRS变量从文件系统加载文档。
- urlloader
根据DOCUMENTS_DIRS,从url加载文档。
GRAPHQL_PERSIST={'DOCUMENTS_DIRS':['/app/documents',# FilesystemLoader'https:// ... /documents',# URLLoader],}
缓存加载程序
默认情况下,文档系统在每次呈现文档时都会读取它们。
配置用于缓存文档的CachedEngine引擎。
GRAPHQL_PERSIST={'DEFAULT_LOADER_ENGINE_CLASS':[graphql_persist.loaders.CachedEngine',],}
持久化查询定义
您可以将架构拆分为单独的文件…
documents/fragments.graphql
fragment userFields on UserType { id email }
并定义前缀为#的pythonic导入。
documents/GetViewer.graphql
# from fragments import userFields { viewer { ...userFields } }
持久化查询由id
{"id":"GetViewer","variables":{}}
多次操作
documents/users.graphql
# from fragments import userFields query GetViewer { viewer { ...userFields } } query GetUsers($last: Int!) { users(last: $last) { ...userFields } }
持久化查询由id和operationName
{"id":"users","operationName":"GetUsers","variables":{"last":2}}
版本控制
版本控制方案由DEFAULT_VERSIONING_CLASS设置变量定义。
GRAPHQL_PERSIST={'DEFAULT_VERSIONING_CLASS':'graphql_persist.versioning.AcceptHeaderVersioning'}
这是版本控制类的完整列表。
DEFAULT_VERSIONING_CLASS | Example |
---|---|
AcceptHeaderVersioning | ^{tt17}$ |
VendorTreeVersioning | ^{tt18}$ |
QueryParameterVersioning | ^{tt19}$ |
HostNameVersioning | ^{tt20}$ |
配置版本控制方案,并根据版本存储graphql文档。
示例
POST /graphql HTTP/1.1 Accept: application/json; version=v1.full { "id": "GetViewer", "variables": {} }
documents/ | ├── v1/ │ ├── full/ │ | └── GetViewer.graphql ? │ └── basic/ | | └── GetViewer.graphql | └── fragments/ | └── users.graphql └── v2/ └── full/ └── basic/
documents/v1/full/GetViewer.graphql
# from ..fragments.users import userFields { viewer { ...userFields } }
设置
以下是django graphql persist中可用的设置列表及其默认值。
文档目录
List of directories or urls searched for GraphQL SDL definitions Default: ()
缓存名称
Cache key name `CACHES[name]` to cache the queries results Default: 'default'
查询密钥处理程序
A custom function `f(query_id, request)` to generate the persisted query keys Default: 'graphql_persist.query.query_key_handler'
默认版本控制类
A versioning class to determine the `request.version` attribute Default: None
默认加载程序引擎类
Class that takes a list of template loaders and attempts to load templates from them in order Default: 'graphql_persist.loaders.Engine' Note: Set variable to 'graphql_persist.loaders.CachedEngine' for caching documents
默认加载程序类
A list of loader classes to import documents from a particular source Default: ( 'graphql_persist.loaders.AppDirectoriesLoader', 'graphql_persist.loaders.FilesystemLoader', 'graphql_persist.loaders.URLLoader', )
app_document_目录
Subdirectory of installed applications for searches documents Default: 'documents'
文档文本
GraphQL document file extension Default: '.graphql'
默认渲染器类
A list of renderer classes that may be used when returning a persisted query response Default: ()