如何在 python 函数中编写 graphQL 突变?
Posted
技术标签:
【中文标题】如何在 python 函数中编写 graphQL 突变?【英文标题】:How do I write a graphQL mutation in a python function? 【发布时间】:2022-01-07 05:48:49 【问题描述】:我想创建一个简单的 graphQL 突变的 python 函数。我有一个 graphQL 模式,并且有一个突变可以通过提供它的 ID 来删除一个对象。 GraphQL 文档显示:
delete(
id: ID!
): Boolean!
要使用全局 ID 删除对象,我尝试创建一个 python 函数,但我遇到了一个我无法弄清楚的 graphQL 语法错误。
#function to delete FIB
def deleteObj(self,id): # returns FIB deletion boolean
objDel = self.graphQLClient.fetch("""
mutation delete($id: [ID!]!)
delete(id: $id,)
id
""",
'id': id ,
)
info('***Object deletion result %s\n' % objDel)
我能够理解我犯了一些愚蠢的错误,但将来的解释会对我有所帮助。
我得到的错误是:
fib 删除结果 'data': None, 'errors': ['message': '语法 错误 GraphQL 请求 (3:34) 意外为空 IN \n\n2: 突变删除($id: [ID!]!) \n3: delete(id: $id,) \n ^\n4: \n', '位置': ['line': 3, 'column': 34]]
我可以使用类似这样的突变插入一个对象:
def insertFibEntry(self, prefix, name): # returns FIB entry ID
fib = self.graphQLClient.fetch("""
mutation insertFibEntry($name: Name!, $nexthops: [ID!]!)
insertFibEntry(name: $name, nexthops: $nexthops)
id
""",
'name': "/"+prefix ,
'nexthops': [self.faces[name]['data']['createFace']['id']]
)
info('***fib result %s\n' % fib)
info('***prefix is %s'% "'/"+prefix+"'"+ '\n')
【问题讨论】:
您是在与远程 graphql api 交互还是在实现自己的? 所以我使用的是 docker 映像,这部分来自该 docker 容器,所以我不知道他们是如何实现它的,但我能够插入一个条目,其中包含我添加的新插入代码之类的东西身体 【参考方案1】:这是上述问题的解决方案-
#function to delete obj
def deleteObj(self,id): # returns obj deletion boolean
objDel = self.graphQLClient.fetch("""
mutation delete($id:ID!)
delete(id: $id)
""",
'id': id
)
info('***fib deletion result %s\n' % objDel)
【讨论】:
以上是关于如何在 python 函数中编写 graphQL 突变?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 apollo graphql 服务器中编写解析 graphql 过滤器
如何使用`django-filters`编写将在整数字段上使用范围过滤器的GraphQL查询?
如何在 .graphql 文件中编写 GraphQl Upsert Query