我一直在使用GraphQL(graphene),编写了一个基于Python/Falcon的小应用程序,该应用程序在Rest&GraphQL中返回帖子列表:
from falcon import API, json
import graphene
def get_all_posts():
posts = [
{
'content': (
'Hello, '
"World..."
),
'author': 'Unknown author'
}
]
return posts
class Query(graphene.ObjectType):
posts = graphene.String()
def resolve_posts(self, info):
return get_all_posts()
schema = graphene.Schema(query=Query)
class PostsResource:
def on_get(self, req, resp):
posts = get_all_posts()
resp.media = {'posts': json.dumps(posts)}
class GraphQLResource:
def on_get(self, req, resp):
query = req.params['query']
result = schema.execute(query)
resp.media = result.data
api = API()
api.add_route('/graphql', GraphQLResource())
api.add_route('/posts', PostsResource())
查询GraphQL(localhost/GraphQL?query=查询%20posts%20{%20posts%20})
{"posts": "[{'content': 'Hello, World...', 'author': 'Unknown author'}]"}
以及使用Rest端点(localhost/posts)
{"posts": "[{\"content\": \"Hello, World...\", \"author\": \"Unknown author\"}]"}
我不知道这是否重要,但我想知道为什么它的序列化方式不同?。。有没有可能做到同样的效果?在
这样做有意义吗?在
任何帮助都将不胜感激!谢谢!在
json.dumps()
)我得到的rest端点的结果:{"posts": [{"content": "Hello, World...", "author": "Unknown author"}]}
看起来它将整个posts列表序列化为单个字符串(
posts = graphene.String()
)。我对graphene
不太熟悉,但可能您必须创建嵌套模式-类似于:我希望它能帮助你解决问题
相关问题 更多 >
编程相关推荐