Comment puis-je accéder à une API Foundry à partir de référentiels de code?
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
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()
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 .