Python序列化Rest并将sam图形化

2024-04-26 22:35:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用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\"}]"}

我不知道这是否重要,但我想知道为什么它的序列化方式不同?。。有没有可能做到同样的效果?在

这样做有意义吗?在

任何帮助都将不胜感激!谢谢!在

  • P、 S如果我不转储(json.dumps())我得到的rest端点的结果:

{"posts": [{"content": "Hello, World...", "author": "Unknown author"}]}


Tags: jsonhelloworldgetdefcontentallquery
1条回答
网友
1楼 · 发布于 2024-04-26 22:35:08

看起来它将整个posts列表序列化为单个字符串(posts = graphene.String())。我对graphene不太熟悉,但可能您必须创建嵌套模式-类似于:

class Post(graphene.ObjectType):
    content = graphene.String()
    author = graphene.String()

class Query(graphene.ObjectType):
    # or Field instead of List, I'm not sure about that.
    posts = graphene.List(Post)

我希望它能帮助你解决问题

相关问题 更多 >