I\xc2\xb4m 很难将 GraphQL 与 Python 结合使用,因为建议的库:gql完全没有文档记录。
\n\n我怎么发现要提供 api url,我需要将 RequestsHTTPTransport 对象传递给客户端,如下所示:
\n\nclient = Client(transport=RequestsHTTPTransport(url=\'https://some.api.com/v3/graphql\'))\nRun Code Online (Sandbox Code Playgroud)\n\n但如何提供像承载密钥这样的凭证呢?
\n\nPS\n我注意到它 RequestsHTTPTransport 还接受一个身份验证参数,其描述为:
\n\n:param auth: Auth tuple or callable to enable Basic/Digest/Custom HTTP Auth\nRun Code Online (Sandbox Code Playgroud)\n\n然而我仍然不知道如何创建这个元组或可调用来使用承载密钥:(
\n\n谢谢指教
\n我正在尝试使用 Django 和 Graphene 执行 GraphQL 查询。要使用 id 查询单个对象,我执行了以下操作:
{
samples(id:"U2FtcGxlU2V0VHlwZToxMjYw") {
edges {
nodes {
name
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常。当我尝试使用多个 id 进行查询时出现问题,如下所示:
{
samples(id_In:"U2FtcGxlU2V0VHlwZToxMjYw, U2FtcGxlU2V0VHlwZToxMjYx") {
edges {
nodes {
name
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在后一种情况下,我收到以下错误:
argument should be a bytes-like object or ASCII string, not 'list'
Run Code Online (Sandbox Code Playgroud)
这是如何定义类型和查询的草图 django-graphene
class SampleType(DjangoObjectType):
class Meta:
model = Sample
filter_fields = {
'id': ['exact', 'in'],
}
interfaces = (graphene.relay.Node,)
class Query(object):
samples = DjangoFilterConnectionField(SampleType)
def resolve_sample_sets(self, info, **kwargs):
return Sample.objects.all()
Run Code Online (Sandbox Code Playgroud) 我想知道如何在 GraphQL 架构中表达输入类型验证,例如:
input DateFormat {
format: String!
}
Run Code Online (Sandbox Code Playgroud)
format最多 10 个字符,例如其他验证。提前致谢
假设我们有这样的模式:
type Subscription {
objectAddedA: ObjectA
objectAddedB: ObjectB
}
Run Code Online (Sandbox Code Playgroud)
graphql 客户端可以同时订阅 objectAddedA 和 objectAddedB 订阅吗?我很难在网络上找到订阅的好例子,并且 graphql 文档似乎根本没有提到它们,除非我错过了。我们正在设计一个在 kubernetes 中运行的系统,其中单个 pod 将收到添加/更新/删除配置的 api 请求,并且我们希望使用 graphql 订阅将这些更改推送到任何关心它们的 pod(它们将是 graphql 客户端) )。然而,将会有很多不同的对象类型,并且可能有几种不同类型的事件,他们希望随时收到通知,因此不确定您是否可以同时订阅多个不同的订阅,或者是否必须设计架构的方式是单个订阅将提供您需要的所有可能的事件。
我有软件包版本
...
Flask 2.0.2
Flask-GraphQL 2.0.0
Flask-Script 2.0.6
...
graphene 3.0
graphql-core 3.1.6
graphql-relay 3.1.0
graphql-server-core 1.1.1
...
Run Code Online (Sandbox Code Playgroud)
当我import flask_graphql得到
Traceback (most recent call last):
File "/Users/Rax/Documents/Projects/Web/Sites/proj/_foo.py", line 1, in <module>
import flask_graphql
File "/Users/Rax/Documents/Projects/Coding/Python/venvs/proj/lib/python3.9/site-packages/flask_graphql/__init__.py", line 1, in <module>
from .blueprint import GraphQL
File "/Users/Rax/Documents/Projects/Coding/Python/venvs/proj/lib/python3.9/site-packages/flask_graphql/blueprint.py", line 5, in <module>
from .graphqlview import GraphQLView
File "/Users/Rax/Documents/Projects/Coding/Python/venvs/proj/lib/python3.9/site-packages/flask_graphql/graphqlview.py", line 7, in <module>
from graphql_server import (HttpQueryError, default_format_error,
File "/Users/Rax/Documents/Projects/Coding/Python/venvs/proj/lib/python3.9/site-packages/graphql_server/__init__.py", line 5, in <module>
from graphql import get_default_backend
ImportError: cannot import name …Run Code Online (Sandbox Code Playgroud) 我正在关注https://www.howtographql.com/graphql-python/4-authentication/上的 graphql-python 教程。但是,我收到 3 个错误,提示“无法在类型“CreateUser”上查询字段“id”。” 我基本上复制了教程中的所有源代码,并且在发布到此处之前仔细检查了我的 Python 代码。我使用了相同版本的 Django、Graphene 和其他包。我使用Windows 10和Python3.7。我怎样才能传递错误?
突变:
mutation {
createUser (
username: "abc",
email: "abc@example.com",
password: "123456"
){
id
username
password
}
}
Run Code Online (Sandbox Code Playgroud)
回复:
{
"errors": [
{
"message": "Cannot query field \"id\" on type \"CreateUser\".",
"locations": [
{
"line": 7,
"column": 5
}
]
},
{
"message": "Cannot query field \"username\" on type \"CreateUser\". Did you mean \"user\"?",
"locations": [
{
"line": 8,
"column": 5
}
]
},
{
"message": "Cannot query field …Run Code Online (Sandbox Code Playgroud) 这个函数将返回所有用户而不是给定的用户名,我怎么能做对?还有更好的 Python GraphQL 客户端吗?gql 就这么简单,没有多少文件可以检查。
def fetch_user(username):
query = gql("""
query getUser($username: String) {
user(
where: { name: { _eq: $username } }
) {
id
name
}
}
""")
result = client.execute(query)
Run Code Online (Sandbox Code Playgroud)