Membuat server web

Anda harus menentukan server web yang menggunakan API atau API yang telah Anda buat. Framework Cloud Endpoints untuk Python mengimplementasikan Web Server Gateway Interface (WSGI) standar untuk merutekan permintaan ke API ke metode dalam kode Anda.

Seperti setiap aplikasi yang berjalan di App Engine, Anda harus membuat file yang disebut app.yaml tempat Anda mengonfigurasi setelan aplikasi App Engine. Untuk menentukan server web, Anda harus membuat perubahan pada file app.yaml.

Untuk menentukan server web:

  1. Buat modul Python, misalnya main.py, dan buat objek endpoints.api_server di tingkat teratas:

    api = endpoints.api_server([EchoApi])

    Kode api = endpoints.api_server([EchoApi]) membuat aplikasi WSGI yang merutekan permintaan API ke metode dalam class EchoAPI.

    Anda dapat memberikan daftar objek remote.Service (yang Anda tentukan saat membuat API) ke endpoints.api_server. Jika Anda memiliki API yang diterapkan di beberapa class, objek remote.Service Anda adalah kumpulan class seperti yang dijelaskan dalam Membuat API yang diterapkan dengan beberapa class.

    Apakah Anda membuat modul terpisah untuk objek endpoints.api_server bergantung pada apakah Anda membuat satu API atau beberapa API.

    • Jika Anda membuat beberapa API (menggunakan beberapa subclass remote.Service) yang ditentukan dalam beberapa file, sebaiknya Anda membuat modul terpisah untuk objek endpoints.api_server sehingga Anda dapat mengimpor semua file class.

    • Jika membuat satu API, Anda dapat menambahkan kode endpoints.api_server yang diperlukan ke modul tempat Anda menentukan API karena Anda tidak perlu mengimpor class lain.

  2. Dalam file app.yaml, petakan server web yang baru saja Anda buat ke lokasi Cloud Endpoints sebagai berikut:

    handlers:
    # The endpoints handler must be mapped to /_ah/api.
    - url: /_ah/api/.*
      script: main.api
    
    

    dengan main adalah modul Python tempat Anda menentukan objek endpoints.api_server.

Menayangkan API dari jalur yang berbeda

Opsional: Untuk menayangkan API dari jalur yang berbeda, misalnya /api/:

  1. Ubah dekorator:

    @endpoints.api(name='echo', version='v1', base_path='/api/')
    
  2. Ubah bagian handlers dalam file app.yaml:

    handlers:
    - url: /api/.*
      script: main.api
    

Membuat log di Endpoints Frameworks untuk Python

Framework Endpoints untuk Python menggunakan modul logging Python standar untuk mencatat informasi tentang status dan siklus proses permintaan aplikasi. Untuk mempelajari log App Engine dan cara melihatnya lebih lanjut, tinjau Membaca dan menulis log aplikasi dalam dokumentasi App Engine.

Modul logging Python menyediakan level log yang telah ditentukan. Dalam urutan tingkat keparahan yang meningkat, level log adalah:

Tingkat log Deskripsi
DEBUG Memberikan log mendetail. Biasanya, Anda menetapkan level ini hanya saat memecahkan masalah.
INFO Level log default untuk Framework Endpoints. Memungkinkan Anda melacak progres aplikasi pada tingkat tinggi.
WARNING Memberi tahu Anda bahwa terjadi sesuatu yang tidak terduga, tetapi aplikasi dapat pulih dan tetap berjalan seperti biasa.
ERROR Memberi tahu Anda bahwa terjadi error yang mungkin menyebabkan beberapa fungsi hilang, tetapi aplikasi masih berjalan.
CRITICAL Memberi tahu Anda bahwa terjadi error atau peristiwa serius yang dapat menyebabkan aplikasi dimatikan.

Logger ada dalam hierarki yang dipisahkan titik. Misalnya, logger endpoints.api_config adalah turunan dari logger endpoints. Hierarki ini memberi Anda kontrol yang akurat atas log mana yang ditampilkan atau disembunyikan. Biasanya, Anda hanya mengubah dua logger root untuk Framework Endpoint: endpoints dan endpoints_management.

Mengaktifkan logging DEBUG untuk Framework Endpoint

Untuk menghindari pembaca log yang kelebihan beban, Framework Endpoints menetapkan logger-nya untuk hanya merekam entri log dengan level log INFO atau yang lebih tinggi. Kapan saja setelah Framework Endpoint diimpor ke modul, Anda dapat mengubah level log sebagai berikut:

import logging
logging.getLogger('endpoints').setLevel(logging.DEBUG)
logging.getLogger('endpoints_management').setLevel(logging.DEBUG)

Metode setLevel menetapkan level log minimum untuk logger.