Definiowanie Cloud Endpoints komunikat odpowiedzi z odpowiedzi JSON API 3rd party

głosy
0

Próbuję utworzyć niestandardowe API z chmurą punktów końcowych Google V2 umieszczonych na App Engine w Pythonie. Zwyczaj API to API, który współdziała z zewnętrznego interfejsu API. Na przykład, zwyczaj API będzie mieć metody GET, że kiedy nazywa sprawia żądanie GET do 3rd party API.

Sprawa stosowanie jest, aby 3rd party API łatwiejsze w użyciu w firmie i dodając dodatkowe kontrole w celu weryfikacji dostępu do zwracanych danych.

Czy istnieje prosty sposób na powrót już sformatowana odpowiedź API z 3rd API z mojego niestandardowego API? Kiedy mówię, proste, nie znaczy konieczności konwertowania odpowiedź JSON do wiadomości końcowego. 3rd Party API zwróci coś takiego:

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

}

Staram się nie konwertować JSON do wiadomości punktów końcowych.

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
)

FYI, jest to uproszczona wersja JSON. Mój rzeczywisty kod konwersji jest znacznie dłuższy i bardziej skomplikowany.

Jestem widokiem coś w bibliotece punktów końcowych lub w Pythonie, który zrobi tej konwersji dla mnie?

Moja największa obawa jest taka, że ​​czas, aby przekształcić odpowiedź od 3 odpowiedzi strona API spowoduje czas reakcji niestandardowej API powinien być większy niż typowy 30-sekundowego limitu czasu podczas oczekiwania na odpowiedź API.

Utwórz 19/12/2018 o 14:21
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
2

Niestety, ramy Punkty końcowe współpracuje wyłącznie z wystąpień wiadomości. Ze względów historycznych, nie jest możliwa zmiana bez większych rearchitecting ram.

Odpowiedział 19/12/2018 o 19:06
źródło użytkownik

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