Das folgende Beispiel zeigt, wie die API mit dem Python-requests
aufgerufen wird.
mithilfe eines API-Schlüssels zur Authentifizierung. Wählen Sie zuerst die Methode der API aus, die Sie verwenden möchten:
Probieren Sie es aus:
- Installieren Sie die Python-Bibliothek
requests
. Über die Befehlszeile:pip install requests
. - Speichern Sie das folgende Python-Programm auf Ihrem Computer und nennen Sie es
example.py
. - JSON-Beispiel herunterladen
Name
example_request.json
- Führen Sie das Beispiel über die Befehlszeile aus:
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/"
# 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()
So legen Sie Fristen fest
Ein Termin gibt die maximale Zeit an, die ein API-Aufruf dauern darf. Ein Nutzer kann sowohl Client- als auch Serverfristen festlegen. Im Zusammenhang mit OR API ist die sinnvollere Angabe, da sie den Backend-Server darüber informiert, wie viel Zeit er hat, um eine Anfrage zu erhalten, den zugrunde liegenden Solver auszuführen und eine Antwort. Im Gegensatz dazu sind Fristen von Kunden hilfreich, um die maximale Zeit wird die Clientanwendung (d.h. die Anwendung, die die OR API aufruft) auf eine Antwort warten, bevor eine Zeitüberschreitung auftritt.
Das folgende Code-Snippet legt sowohl ein Client- als auch ein Server-Zeitlimit im
Sitzungsheader der Anfrage. Das Zeitlimit des Clients ist auf 60 Sekunden festgelegt. Die
Server-Frist sollte kürzer sein als die Client-Frist zur Berücksichtigung
Kommunikationsaufwand. Hier haben wir den Servertermin auf 95 % des Kundentermins festgelegt. Dies kann je nach Anwendung variieren. Beachten Sie, dass die API
Der Schlüssel wurde auch in die Sitzungsheader verschoben, um den session.post(...)
-Aufruf auszuführen
sauberer machen.
# 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)