Comment puis-je accéder à une API Foundry à partir de référentiels de code?

Sep 19 2020

Quelle est la bonne façon d'accéder à une API Foundry interne à partir d'un référentiel de code en utilisant, par exemple, une transformation Python?

Réponses

1 icharbon Sep 19 2020 at 03:12

Cette fonction n'est pas disponible par défaut sur chaque référentiel de code, et vous devez demander à votre administrateur de plateforme de l'activer sur la base d'un référentiel.

Une fois que le référentiel est sur la liste blanche, vous pouvez utiliser la bibliothèque de requêtes python dans votre référentiel de code afin de créer l'appel d'API et d'obtenir le jeton utilisateur à partir du transform_context. Voici un extrait de code comme exemple:

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

Pour développer le post de @ icharbon ci-dessus - je recommande de définir la timeoutpropriété sur les requestsappels python . Sans cela, une requête HTTP bloquée peut entraîner le blocage de votre tâche pyspark.

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()

Vous pouvez en savoir plus sur le paramètre timeout et d'autres paramètres facultatifs ici .