Como posso acessar uma API Foundry de Repositórios de código?

Sep 19 2020

Qual é a maneira correta de acessar uma API Foundry interna de um Repositório de código usando, por exemplo, uma transformação Python?

Respostas

1 icharbon Sep 19 2020 at 03:12

Esta função não está disponível por padrão em todos os Repositórios de Código e você deve pedir ao administrador da plataforma para habilitá-la com base no Repositório.

Depois que o Repositório estiver na lista de permissões, você pode usar a biblioteca de solicitações python em seu Repositório de código para construir a chamada de API e obter o token de usuário do transform_context. Aqui está um snippet de código como exemplo:

from transforms.api import transform_df, Output
import requests

@transform_df(
Output("/your/output/table"),
)
def my_compute_function(ctx):

  # Construct the URL for the GET request
  url = "https://fourndy_url.com/service_url/api/..."


  # Authentication
  bearer_token = ctx.auth_header
  header = {'Authorization': bearer_token, 'Content-Type': 'application/json'}


  # Get the response
  response = requests.get(url, headers=header).json()
1 blake Sep 25 2020 at 13:59

Para expandir a postagem de @icharbon acima - eu recomendo definir a timeoutpropriedade em requestschamadas python . Sem isso, uma solicitação HTTP suspensa pode fazer com que seu trabalho pyspark trave.

from transforms.api import transform_df, Output
import requests


@transform_df(
Output("/your/output/table"),
)
def my_compute_function(ctx):

  # Construct the URL for the GET request
  url = "https://fourndy_url.com/service_url/api/..."


  # Authentication
  bearer_token = ctx.auth_header
  header = {'Authorization': bearer_token, 'Content-Type': 'application/json'}


  # Get the response
  response = requests.get(url, headers=header, timeout=10.0).json()

Você pode ler mais sobre o parâmetro de tempo limite e outros parâmetros opcionais aqui .