python - 仅使用 Google App Engine、webapp2 和 Python 创建 API?

标签 python google-app-engine google-cloud-platform google-cloud-python

是否可以在 Google App Engine 上仅使用 webapp2 和 Python 创建 API?

例如,让我的路由 /post/123 由这个 RequestHandler 处理:

class ShowPosts(webapp2.RequestHandler):
    def get(self):
        posts = Post.query().fetch()
        # return the post as data (JSON) here as response 

当客户端向 /post/123 发出 restful 请求时,它可以返回数据对象(而不是呈现的 html 页面)。

这是可能的还是推荐的?

最佳答案

您可以根据查询构建一个 Python 列表或字典对象,然后将其作为 JSON 对象发送,并将其作为响应发送。尝试这样的事情:

import json

posts     = Post.query()
post_json = []

for post in posts:
    post_dict = {
        'name' : post.name,
        'city' : post.city,
        'state': post.state
    }
    post_json.append( post_dict )

return json.dumps(post_json)

更新: OP 使用 POST 方法询问示例:

import json

class ShowPosts(webapp2.RequestHandler):
    def get(self):
        posts = Post.query()
        post_json   = []

        for post in posts:
            post_dict = {
                'name' : post.name,
                'city' : post.city,
                'state': post.state
            }

            post_json.append( post_dict )

        return json.dumps(post_json) 

    def post(self):
        posts = Post.query()
        post_json   = []

        for post in posts:
            post_dict = {
                'name' : post.name,
                'city' : post.city,
                'state': post.state
            }

            post_json.append( post_dict )

        post_json.append(
            {
                'posted_name': self.request.get('name'),
                'posted_msg': self.request.get('msg')
            }
        )
        return json.dumps(post_json) 

关于python - 仅使用 Google App Engine、webapp2 和 Python 创建 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52021086/

相关文章:

python 我想用日期时间设置索引数据帧

python - 使用 Python 和 Selenium 进行抓取 - 如果元素不存在,我应该如何返回 'null'

Python 多索引函数,在分割列中保留顺序或其他可能的解决方案

Django Rest Framework 更新或如果不存在则创建

java - 增加我在 Google App Engine 上所有应用程序 ID 的电子邮件配额

google-cloud-platform - GCP(尤其是AI平台)中的启动盘和数据盘有什么区别

python - 如何将参数传递给正在运行的Python线程

google-app-engine - 托管虚拟机中的 Websocket 支持

google-cloud-platform - session 断开后 Google Cloud VM 文件被删除

google-cloud-platform - 如何从云存储中的存储桶中下载对象?