Definir Cloud Endpoints Mensaje de respuesta de una respuesta de la API JSON tercera parte

votos
0

Estoy tratando de crear una API personalizada con Google Cloud Endpoints V2 alojadas en App Engine en Python. La API de costumbre es una API que interactúa con una API externa. Por ejemplo, la API a medida tendrá un método GET que cuando se le hace una petición GET a una API de tercera parte.

El caso de uso es hacer que el API tercera parte más fácil de usar dentro de una empresa y la adición de nuevos controles para verificar el acceso a los datos devueltos.

¿Hay una manera fácil de devolver la respuesta del API ya formateado de la tercera parte de mi API API personalizada? Cuando digo fácil, quiero decir, no tener que convertir la respuesta JSON en un mensaje de punto final. La API tercera parte devolverá algo como:

{
    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],
        },
    ]

}

Estoy tratando de no convertir el JSON en un mensaje de criterios de valoración.

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)

...

#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
)

Para su información, esta es una versión simplificada de la JSON. Mi código de conversión real es mucho más largo y complejo.

Estoy pasando por alto algo en la biblioteca o puntos finales en Python que va a hacer esta conversión para mí?

Mi mayor temor es que el tiempo para convertir la respuesta de la tercera respuesta de la API del partido hará que el tiempo de respuesta del API a medida que sea mayor que el típico 30 segundos de tiempo de espera cuando se espera de una respuesta del API.

Publicado el 19/12/2018 a las 14:21
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
2

Por desgracia, el marco Endpoints trabaja exclusivamente con instancias de mensajes. Debido a razones históricas, esto no es posible cambiar sin mayor rediseñar del marco.

Respondida el 19/12/2018 a las 19:06
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more