Definieren Cloud Endpoints-Response-Nachricht von einer dritten Partei API JSON-Antwort

stimmen
0

Ich versuche, eine benutzerdefinierte API mit Google Cloud Endpoints v2 auf App Engine in Python gehostet zu erstellen. Die kundenspezifische API ist eine API, die mit einem externen API interagiert. Zum Beispiel wird die benutzerdefinierte API eine GET-Methode hat, dass beim Aufruf eine GET-Anforderung an einen 3rd-Party-API macht.

Der Anwendungsfall ist der 3rd-Party-API zu erleichtern innerhalb eines Unternehmens zu verwenden und das Hinzufügen von zusätzlichen Kontrollen Zugriff auf die zurückgegebenen Daten zu überprüfen.

Gibt es eine einfache Möglichkeit , die bereits formatierte API Antwort von dem 3rd - Party - API von meiner benutzerdefinierten API zurück? Wenn ich einfach sage, meine ich, die nicht die JSON - Antwort in eine Endpunkt - Nachricht zu konvertieren. Der 3rd - Party - API wird wieder so etwas wie:

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

}

Ich versuche nicht, die JSON in eine Endpunkt Nachricht zu konvertieren.

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
)

Zu Ihrer Information, das ist eine vereinfachte Version des JSON. Mein tatsächlicher Conversion-Code ist viel länger und komplexer.

Bin ich mit Blick auf etwas in den Endpunkten Bibliothek oder in Python, die diese Umwandlung für mich tun?

Meine größte Angst ist, dass die Zeit, um die Antwort von der dritten Partei API-Antwort zu konvertieren wird die benutzerdefinierte API Antwortzeit größer sein als das typische 30 Sekunden Timeout verursachen, wenn sie für eine API-Antwort zu warten.

Veröffentlicht am 19/12/2018 um 14:21
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Leider funktioniert die Endpoints Rahmen ausschließlich mit Nachrichteninstanzen. Aus historischen Gründen ist dies nicht möglich, ohne großen rearchitecting des Rahmens zu ändern.

Beantwortet am 19/12/2018 um 19:06
quelle vom benutzer

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