我正在使用Cloud Endpoints开发REST API。我知道根据文档,每个API方法都应返回一个实体,然后该实体会自动转换为有效的JSON字符串。 但是,我正在处理一个身份验证库,在某些情况下会返回一个JSON,应该作为响应传递给客户端。
坚持使用默认方法,即返回实体,仍然是可能的,但它会涉及许多令人讨厌的中间步骤,例如解析JSON并根据JSON内容填充要返回的实体的正确字段
我想知道是否有更简单的方法来指示API直接返回JSON字符串,而不是将其转换为实体,只是将其转换回源JSON。
答案 0 :(得分:0)
有一件事可能会对你有所帮助。 假设您有一个RPC响应类
from protorpc import messages
from protorpc import message_types
from protorpc import remote
class ApiResponse(message.Messages):
response = messages.StringField(1, required = True)
您可以使用JSON模块在响应字段中返回JSON。首先在你的端点api中导入json
import json
假设您的回复是
json_response = [{'name': 'Jack', 'age':12}, {'name': 'Joe', 'age':13}]
在您对此API的回复中,您可以这样做: -
return ApiResponse(response = json.dumps({'data': json_response}))
json.dumps()将您的字典对象转换为可以传递给ApiResponse类响应的JSON字符串。
在客户端(javascript)收到响应后,您只需使用
将其解析为JSON即可JSON.parse(response)