API OR – Ví dụ về Python

Ví dụ sau đây cho thấy cách gọi API bằng thư viện requests của Python, sử dụng khoá API để xác thực. Trước tiên, hãy chọn phương thức của API bạn quan tâm:


Cách dùng thử:

  • Cài đặt thư viện requests Python. Từ dòng lệnh: pip install requests.
  • Lưu chương trình Python sau đây vào máy tính của bạn, đặt tên cho chương trình này là example.py.
  • Tải tệp JSON mẫu xuống . Đặt tên cho không gian là example_request.json
  • Chạy ví dụ từ dòng lệnh: 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()

Làm cách nào để đặt thời hạn?

Thời hạn xác định thời gian thực tế tối đa mà một lệnh gọi đến API sẽ mất. Người dùng có thể đặt thời hạn cho cả máy khách và máy chủ. Trong ngữ cảnh của API OR, việc thời hạn của máy chủ hữu ích hơn vì thời hạn này cho máy chủ phụ trợ biết cách thời gian để tiếp nhận yêu cầu, chạy trình giải cơ bản và trả về một của bạn. Ngược lại, thời hạn của khách hàng lại hữu ích khi đặt ra thời hạn tối đa ứng dụng khách (tức là ứng dụng gọi API OR) sẽ chuyển đến đợi phản hồi trước khi hết thời gian chờ.

Đoạn mã sau đây đặt cả thời hạn của ứng dụng và máy chủ trong phần đầu phiên của yêu cầu. Thời hạn của ứng dụng được đặt thành 60 giây. Chiến lược phát hành đĩa đơn thời hạn của máy chủ phải ít hơn thời hạn mà khách hàng cần tính đến hao tổn giao tiếp. Ở đây, chúng ta đặt thời hạn của máy chủ là 95% thời hạn của ứng dụng, nhưng thời hạn này có thể thay đổi tuỳ thuộc vào ứng dụng. Lưu ý rằng khoá API cũng được chuyển sang tiêu đề phiên để giúp lệnh gọi session.post(...) rõ ràng hơn.



# 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)