Python 2.7 从第三方API JSON响应定义云端点响应消息

Python 2.7 从第三方API JSON响应定义云端点响应消息,python-2.7,google-app-engine-python,google-cloud-endpoints-v2,Python 2.7,Google App Engine Python,Google Cloud Endpoints V2,我正在尝试用Python中的AppEngine上托管的Google Cloud Endpoints v2创建一个自定义API。自定义API是与外部API交互的API。例如,定制API将有一个GET方法,调用该方法时会向第三方API发出GET请求 该用例旨在使第三方API更易于在公司内使用,并添加额外的检查以验证对返回数据的访问 有没有一种简单的方法可以从我的自定义API中从第三方API返回已格式化的API响应? 当我说easy时,我的意思是不必将JSON响应转换为端点消息。第三方API将返回如下

我正在尝试用Python中的AppEngine上托管的Google Cloud Endpoints v2创建一个自定义API。自定义API是与外部API交互的API。例如,定制API将有一个GET方法,调用该方法时会向第三方API发出GET请求

该用例旨在使第三方API更易于在公司内使用,并添加额外的检查以验证对返回数据的访问

有没有一种简单的方法可以从我的自定义API中从第三方API返回已格式化的API响应? 当我说easy时,我的意思是不必将JSON响应转换为端点消息。第三方API将返回如下内容:

{
    keyOne: "key one value",
    keyTwo: "key two value",
    keyThree: ["key three value array", "another string", "and another string"],
    keyFour: [
        {
            keyOne: "key one value",
            keyTwo: "key two value",
            keyThree: ["key three value array", "another string", "and another string"],
        },
        {
            keyOne: "key one value",
            keyTwo: "key two value",
            keyThree: ["key three value array", "another string", "and another string"],
        },
    ]

}
我试图不将JSON转换为端点消息

class GetResponse(messages.Message):
    keyOne = messages.StringField(1)
    keyTwo = messages.StringField(2, required=True)
    keyThree = messages.MessageField(SomeStringList, 3)
    keyFour = messages.MessageField(SomeJsonList, 4)

class SomeStringList(messages.Message):
    keyFive = messages.StringField(1, repeated=True)

class SomeJsonList(messages.Message):
    keySix = messages.MessageField(GetResponse, 1, repeated=True)

仅供参考,这是JSON的简化版本。我的实际转换代码更长更复杂

我是否忽略了端点库或Python中可以为我进行此转换的内容


我最大的担心是,转换来自第三方API响应的响应的时间将导致自定义API响应时间大于等待API响应时的典型30秒超时。

不幸的是,Endpoints框架仅适用于消息实例。由于历史原因,如果不重新构建框架,这是不可能改变的。

不幸的是,Endpoints框架只与消息实例一起工作。由于历史原因,如果不对框架进行重大重组,这是不可能改变的

#Convert JSON
converted_json_list = []
for obj in resObj["keyFour"]:
    converted_json_list.append(GetResponse(
        keyOne=obj["keyOne"],
        keyTwo=obj["keyTwo"],
        keyThree=obj["keyThree"]
    ))

return GetResponse(
    keyOne=resObj["keyOne"],
    keyTwo=resObj["keyTwo"],
    keyThree=resObj["keyThree"]
    keyFour=converted_json_list
)