Définir réponse Cloud Endpoints message d'une API 3ème partie réponse JSON

voix
0

Je suis en train de créer une API personnalisée avec Google Cloud Endpoints v2 hébergé sur App Engine en Python. L'API personnalisée est une API qui interagit avec une API externe. Par exemple, l'API personnalisée aura une méthode GET que lorsqu'elle est appelée fait une requête GET à une API 3ème partie.

Le cas d'utilisation est de rendre l'API 3ème partie plus facile à utiliser au sein d'une entreprise et en ajoutant des contrôles supplémentaires afin de vérifier l'accès aux données renvoyées.

Est - il un moyen facile de retourner la réponse de l' API déjà formaté à partir de la 3ème API partie de mon API personnalisée? Quand je dis facile, je veux dire ne pas avoir à convertir la réponse JSON dans un message de point final. L'API 3ème partie retournera quelque chose comme:

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

}

J'essaie de ne pas convertir le JSON dans un message de points d'extrémité.

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
)

Pour votre information, ceci est une version simplifiée du JSON. Mon code de conversion réel est beaucoup plus longue et plus complexe.

Suis-je quelque chose dans la méconnais bibliothèque de points d'extrémité ou en Python qui va faire cette conversion pour moi?

Ma plus grande crainte est que le temps de convertir la réponse de la 3e réponse de l'API partie provoquera le temps de réponse de l'API personnalisée pour être supérieure à 30 typique deuxième temps d'arrêt lors de l'attente d'une réponse de l'API.

Créé 19/12/2018 à 14:21
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Malheureusement, le cadre Endpoints travaille exclusivement avec des instances de message. Pour des raisons historiques, ce n'est pas possible de changer sans grande rearchitecting du cadre.

Créé 19/12/2018 à 19:06
source utilisateur

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