Definir Cloud Endpoints mensagem de resposta a partir de uma resposta da API JSON 3rd party

votos
0

Eu estou tentando criar uma API personalizada com o Google Cloud Endpoints V2 hospedados no App Engine em Python. A API personalizado é uma API que interage com uma API externa. Por exemplo, a API personalizado terá um método GET que quando chamou faz um pedido GET para um 3o partido API.

O caso de uso é fazer com que o 3o partido API mais fácil de usar dentro de uma empresa e adicionando verificações adicionais para verificar o acesso aos dados retornados.

Existe uma maneira fácil de voltar a resposta da API já formatado a partir do 3º API partido da minha API personalizado? Quando digo fácil, eu não significa ter de converter a resposta JSON em uma mensagem de endpoint. O terceiro partido API irá retornar 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],
        },
    ]

}

Estou tentando não converter o JSON em uma mensagem de endpoints.

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, esta é uma versão simplificada do JSON. Meu código de conversão real é muito maior e mais complexa.

Estou com vista para algo na biblioteca endpoints ou em Python que irá fazer esta conversão para mim?

Meu maior medo é que o tempo para converter a resposta a partir do 3º resposta do partido API fará com que o costume tempo de resposta da API a ser maior do que o típico 30 segundo tempo quando esperando por uma resposta da API.

Publicado 19/12/2018 em 14:21
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Infelizmente, o quadro Endpoints trabalha exclusivamente com instâncias de mensagem. Devido a razões históricas, isso não é possível mudar sem grandes rearquitetar do quadro.

Respondeu 19/12/2018 em 19:06
fonte usuário

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