Contoh berikut menunjukkan cara memanggil API dengan library requests
Python, menggunakan kunci API untuk autentikasi. Untuk menggunakannya:
- Instal library
requests
Python. Dari command line Anda:pip install requests
. - Simpan program Python berikut ke komputer Anda, dan beri nama
example.py
. - Simpan file example_request.json di direktori yang sama dengan program Anda (ini adalah contoh permintaan JSON).
- Buat file
credentials.json
di direktori yang sama dengan program Anda, menggunakan{"key": "your_api_key"}
- Jalankan contoh dari command line:
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:solveShiftGeneration"
# 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()
Bagaimana cara menetapkan tenggat waktu?
Batas waktu menentukan waktu proses maksimum yang diperlukan untuk melakukan panggilan ke API. Pengguna dapat menetapkan tenggat waktu klien dan server. Dalam konteks OR API, tenggat waktu server adalah hal yang lebih berguna karena memberi tahu server backend tentang berapa waktu yang diperlukan untuk menerima permintaan, menjalankan pemecah masalah yang mendasarinya, dan menampilkan respons. Sebaliknya, batas waktu klien berguna untuk menetapkan waktu maksimum bagi aplikasi klien (yaitu, aplikasi yang memanggil OR API) untuk menunggu respons, sebelum waktu habis.
Cuplikan kode berikut menetapkan batas waktu klien dan server di
header sesi permintaan. Batas waktu klien ditetapkan ke 60 detik. Batas
waktu server harus kurang dari batas waktu klien untuk memperhitungkan
overhead komunikasi. Di sini kita menetapkan batas waktu server menjadi 95% dari batas waktu klien, tetapi ini dapat bervariasi tergantung pada aplikasi. Perhatikan bahwa kunci API
juga dipindahkan ke header sesi untuk membuat pembersih panggilan
session.post(...)
.
# 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)