Contoh berikut menunjukkan cara memanggil API dengan Python requests
library, menggunakan kunci API untuk otentikasi. Untuk menggunakannya:
- Instal library
requests
Python. Dari command line: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 (ini adalah contoh permintaan JSON).
- Buat file
credentials.json
di direktori yang sama dengan program Anda, dengan{"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: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()
Bagaimana cara menetapkan tenggat waktu?
Batas waktu menentukan waktu maksimal yang diperlukan panggilan ke API. Pengguna dapat menetapkan tenggat waktu klien dan server. Dalam konteks OR API, batas waktu server lebih berguna karena memberi tahu server backend tentang berapa lama waktu yang diperlukan untuk menerima permintaan, menjalankan solver yang mendasarinya, dan menampilkan respons. Sebaliknya, tenggat waktu klien berguna untuk menetapkan waktu maksimum yang aplikasi klien (yaitu, aplikasi yang memanggil OR API) akan menunggu respons, sebelum {i>time out<i} (waktu tunggu).
Cuplikan kode berikut menetapkan batas waktu klien dan server dalam
header sesi permintaan. Batas waktu klien ditetapkan ke 60 detik. Tujuan
batas waktu server harus lebih kecil dari
tenggat waktu klien untuk memperhitungkan
overhead komunikasi. Di sini, kita menetapkan batas waktu server menjadi 95% dari batas waktu
klien, tetapi hal ini dapat bervariasi bergantung pada aplikasi. Perhatikan bahwa API
tombol juga dipindahkan ke header sesi untuk melakukan panggilan session.post(...)
lebih bersih.
# 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)