Contoh Desain Jaringan

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/shipping:designShippingNetwork"
    
    # 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 maksimum yang diperlukan untuk panggilan ke API. Pengguna dapat menetapkan batas waktu klien dan server. Dalam konteks OR API, batas waktu server adalah cara yang lebih berguna karena memberi tahu server {i>backend <i}tentang bagaimana banyak waktu yang dimilikinya untuk menerima permintaan, menjalankan pemecah masalah yang mendasarinya, dan yang dihasilkan. 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 klien tenggat waktu, tetapi ini bisa bervariasi tergantung 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)