L'exemple suivant montre comment appeler l'API avec la classe Python requests
.
à l'aide d'une clé API pour l'authentification. Pour l'utiliser :
- Installez la bibliothèque Python
requests
. Depuis votre ligne de commande:pip install requests
. - Enregistrez le programme Python suivant sur votre ordinateur et nommez-le
example.py
. - Enregistrez le fichier example_request.json dans le même répertoire que votre (il s'agit d'un exemple de requête JSON).
- Créez un fichier
credentials.json
dans le même répertoire que votre programme, avec{"key": "your_api_key"}
- Exécutez l'exemple à partir de la ligne de commande:
python example.py
.
# example.py
import json
import requests
def run_example():
"""Calls the OR API to solve a shift scheduling problem."""
# Endpoint for the workforce scheduling solver in the OR API.
end_point = "https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling"
# Read the API Key from a JSON file with the format:
# {"key": "your_api_key"}
with open("credentials.json") as f:
credentials = json.load(f)
api_key = credentials["key"]
# Load the JSON file with the request.
with open("example_request.json", "r") as f:
json_request = json.load(f)
# Call the API post method.
response = requests.post(f"{end_point}?key={api_key}", json=json_request)
# Process the response.
if response.ok:
solution = json.loads(response.content)
with open("example_response.json", "w") as f:
json.dump(solution, f, indent=2)
print(solution)
else:
error = json.loads(response.content)["error"]
print(f'Status code {error["code"]}: {error["message"]}')
if __name__ == "__main__":
run_example()
Comment définir des délais ?
Un délai limite détermine la durée maximale qu'un appel à l'API doit prendre. Un utilisateur peut définir des délais pour le client et le serveur. Dans le contexte de l'API OR, l'échéance du serveur est la plus utile, car elle indique au serveur backend comment du temps nécessaire pour recevoir une requête, exécuter le résolveur sous-jacent et renvoyer une de réponse. En revanche, les échéances des clients sont utiles pour définir la durée maximale l'application cliente (c'est-à-dire l'application qui appelle l'API OR) attend une réponse avant d'expirer.
L'extrait de code suivant définit un délai pour le client et le serveur dans le paramètre
en-têtes de session de la requête. Le délai du client est défini sur 60 secondes. La
l'échéance du serveur doit être inférieure à l'échéance du client pour prendre en compte
sur la communication. Ici, nous définissons le délai du serveur à 95% du temps
date limite, mais celle-ci peut
varier en fonction de la candidature. Notez que l'API
a également été déplacée dans les en-têtes de session pour effectuer l'appel session.post(...)
plus propre.
# Call the API post method.
session = requests.Session()
client_deadline_seconds = 60
server_deadline_seconds = 0.95 * client_deadline_seconds
session.headers = {
"Content-Type": "application/json",
"Connection": "keep-alive",
"Keep-Alive": f"timeout={client_deadline_seconds}, max=1",
"X-Server-Timeout": f"{server_deadline_seconds}",
"X-Goog-Api-Key": api_key,
}
response = session.post(end_point, json=json_request, timeout=client_deadline_seconds)