标签: graphql-python

Python GraphQL gql 客户端身份验证

I\xc2\xb4m 很难将 GraphQL 与 Python 结合使用,因为建议的库:gql完全没有文档记录。

\n\n

我怎么发现要提供 api url,我需要将 RequestsHTTPTransport 对象传递给客户端,如下所示:

\n\n
client = Client(transport=RequestsHTTPTransport(url=\'https://some.api.com/v3/graphql\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

但如何提供像承载密钥这样的凭证呢?

\n\n

PS\n我注意到它 RequestsHTTPTransport 还接受一个身份验证参数,其描述为:

\n\n
:param auth: Auth tuple or callable to enable Basic/Digest/Custom HTTP Auth\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而我仍然不知道如何创建这个元组或可调用来使用承载密钥:(

\n\n

谢谢指教

\n

python oauth graphql graphql-python

8
推荐指数
1
解决办法
5501
查看次数

如何使用graphene-django通过GraphQL中的id列表过滤查询?

我正在尝试使用 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)

django-filter graphene-python graphql-python

7
推荐指数
2
解决办法
3825
查看次数

如何在 GraphQL 中表达输入验证

我想知道如何在 GraphQL 架构中表达输入类型验证,例如:

input DateFormat {
  format: String!
}
Run Code Online (Sandbox Code Playgroud)
  • 我该如何表达format最多 10 个字符,例如其他验证。
  • 这可以使用GraphQL-core 3 for python 来实现吗?

提前致谢

python python-3.x graphql graphql-python

6
推荐指数
1
解决办法
1361
查看次数

一个客户端可以在一个连接中订阅多个 graphql 订阅吗?

假设我们有这样的模式:

type Subscription {
  objectAddedA: ObjectA
  objectAddedB: ObjectB
}
Run Code Online (Sandbox Code Playgroud)

graphql 客户端可以同时订阅 objectAddedA 和 objectAddedB 订阅吗?我很难在网络上找到订阅的好例子,并且 graphql 文档似乎根本没有提到它们,除非我错过了。我们正在设计一个在 kubernetes 中运行的系统,其中单个 pod 将收到添加/更新/删除配置的 api 请求,并且我们希望使用 graphql 订阅将这些更改推送到任何关心它们的 pod(它们将是 graphql 客户端) )。然而,将会有很多不同的对象类型,并且可能有几种不同类型的事件,他们希望随时收到通知,因此不确定您是否可以同时订阅多个不同的订阅,或者是否必须设计架构的方式是单个订阅将提供您需要的所有可能的事件。

graphql graphql-python

6
推荐指数
1
解决办法
2289
查看次数

Flask 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)

python graphql graphql-python

6
推荐指数
1
解决办法
1810
查看次数

“无法查询 CreateUser 类型上的字段‘id’”官方 Graphql 教程

我正在关注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)

graphql graphene-python graphql-python

5
推荐指数
1
解决办法
6905
查看次数

如何在python-gql中使用变量?

这个函数将返回所有用户而不是给定的用户名,我怎么能做对?还有更好的 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)

graphql graphql-python

0
推荐指数
1
解决办法
2304
查看次数