仅使用 Google App Engine、webapp2 和 Python 创建一个 API?
Creating an API with just Google App Engine, webapp2 and 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 页面)。
这可行或推荐吗?
您不必 return 一个 HTML 页面。您可以 return 一个 JSON,或者甚至只是一个字符串,因为这是您托管的代码。您可以使用可以响应 REST 调用的 App Engine 轻松发送 URL。
您可以从查询中构建一个 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)
是否可以在 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 页面)。
这可行或推荐吗?
您不必 return 一个 HTML 页面。您可以 return 一个 JSON,或者甚至只是一个字符串,因为这是您托管的代码。您可以使用可以响应 REST 调用的 App Engine 轻松发送 URL。
您可以从查询中构建一个 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)