Ví dụ về thiết kế mạng

Ví dụ sau đây minh hoạ cách gọi API bằng mã Python requests thư viện, sử dụng khoá API để xác thực. Cách sử dụng:

  • Cài đặt thư viện requests của 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.
  • Lưu tệp example_request.json vào cùng thư mục với tệp (đây là yêu cầu JSON mẫu).
  • Tạo tệp credentials.json trong cùng thư mục với tệp chương trình, với {"key": "your_api_key"}
  • 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/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()

Cách đặt ra thời hạn?

Thời hạn xác định khoảng thời gian tối đa mà lệnh gọi đến API cần. 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% ứng dụng nhưng thời hạn này có thể thay đổi tuỳ thuộc vào đơn đăng ký. Lưu ý rằng API phím cũng được chuyển sang tiêu đề phiên để thực hiện 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)