Seperti setiap aplikasi yang berjalan di App Engine, Anda harus membuat file
bernama app.yaml tempat Anda
mengonfigurasi setelan aplikasi App Engine. Untuk menentukan server web,
Anda membuat perubahan pada file app.yaml.
Untuk menentukan server web:
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
Anda membuat API) ke
endpoints.api_server. Jika Anda memiliki API yang diimplementasikan di beberapa
class, objek remote.Service Anda adalah kumpulan class seperti
yang dijelaskan dalam Membuat API yang diimplementasikan 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 buat modul terpisah untuk objek endpoints.api_server agar 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.
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 Anda dari jalur yang berbeda
Opsional: Untuk menayangkan API dari jalur yang berbeda, misalnya /api/:
Endpoints Frameworks untuk Python menggunakan
modul logging Python standar
untuk mencatat informasi tentang
status aplikasi dan siklus proses permintaan. Untuk mempelajari lebih lanjut log App Engine dan cara melihatnya, tinjau Membaca dan menulis log aplikasi dalam dokumentasi App Engine.
Modul logging Python menyediakan tingkat log yang telah ditentukan sebelumnya. Dalam urutan tingkat keparahan yang meningkat, tingkat log adalah:
Tingkat log
Deskripsi
DEBUG
Memberikan log mendetail. Biasanya, Anda hanya menyetel level ini saat memecahkan masalah.
INFO
Level log default untuk Endpoints Frameworks. Memungkinkan Anda melacak progres aplikasi pada tingkat tinggi.
WARNING
Memberi tahu Anda bahwa terjadi sesuatu yang tidak terduga, tetapi aplikasi dapat dipulihkan dan tetap berjalan normal.
ERROR
Memberi tahu Anda bahwa terjadi error yang dapat menyebabkan hilangnya beberapa fungsi, tetapi aplikasi masih berjalan.
CRITICAL
Memberi tahu Anda bahwa terjadi error atau peristiwa serius yang dapat menyebabkan aplikasi ditutup.
Logger ada dalam hierarki yang dipisahkan dengan titik. Misalnya, pencatat
endpoints.api_config adalah turunan dari pencatat endpoints. Hierarki ini
memberi Anda kontrol yang akurat atas log mana yang dikeluarkan atau dihentikan. Biasanya,
Anda hanya mengubah dua logger root untuk Endpoints Frameworks:
endpoints dan endpoints_management.
Mengaktifkan logging DEBUG untuk Endpoints Frameworks
Untuk menghindari kelebihan beban pada pembaca log, Endpoints Frameworks menetapkan logger-nya hanya untuk merekam entri log dengan level log INFO atau yang lebih tinggi. Kapan saja setelah Endpoints Frameworks diimpor ke dalam modul, Anda dapat mengubah tingkat log sebagai berikut:
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-04 UTC."],[[["\u003cp\u003eA web server must be defined within the \u003ccode\u003eapp.yaml\u003c/code\u003e file to route requests to your API's methods using the Web Server Gateway Interface (WSGI).\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eendpoints.api_server\u003c/code\u003e object, created in a Python module like \u003ccode\u003emain.py\u003c/code\u003e, functions as a WSGI application that routes API requests, with the option to include multiple \u003ccode\u003eremote.Service\u003c/code\u003e objects if you have a multi-class API.\u003c/p\u003e\n"],["\u003cp\u003eIn the \u003ccode\u003eapp.yaml\u003c/code\u003e file, you must map the web server to the Cloud Endpoints location, by setting the url handler to \u003ccode\u003e/_ah/api/.*\u003c/code\u003e or a different path if configured, and link the script to the module where \u003ccode\u003eendpoints.api_server\u003c/code\u003e was defined.\u003c/p\u003e\n"],["\u003cp\u003eEndpoints Frameworks for Python employs the standard Python logging module, with levels ranging from \u003ccode\u003eDEBUG\u003c/code\u003e to \u003ccode\u003eCRITICAL\u003c/code\u003e, defaulting to \u003ccode\u003eINFO\u003c/code\u003e, and can be modified using the \u003ccode\u003esetLevel\u003c/code\u003e method for loggers like \u003ccode\u003eendpoints\u003c/code\u003e and \u003ccode\u003eendpoints_management\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Creating a web server\n\nYou must define a web server that uses the\n[API or APIs you have created](/endpoints/docs/frameworks/python/create_api).\nCloud Endpoints Frameworks for Python implements the standard\n[Web Server Gateway Interface](https://wsgi.readthedocs.io/)\n(WSGI) to route requests to your API to the methods in your code.\n\nAs with every application that runs on App Engine, you must create a file\ncalled [`app.yaml`](/appengine/docs/standard/python/config/appref) in which you\nconfigure your App Engine app's settings. To define the web server,\nyou make changes to your `app.yaml` file.\n\nTo define a web server:\n\n1. Create a Python module, for example `main.py`, and create an\n `endpoints.api_server` object at the top-level:\n\n api = endpoints.api_server([EchoApi])\n\n The code `api = endpoints.api_server([EchoApi])` creates a WSGI application\n that routes API requests to the methods in the `EchoAPI` class.\n\n You can provide a list of `remote.Service` objects (which you defined when\n you [created your API](/endpoints/docs/frameworks/python/create_api)) to\n `endpoints.api_server`. If you have an API that is implemented in several\n classes, then your `remote.Service` object is a collection of classes as\n described in [Creating an API implemented with multiple\n classes](/endpoints/docs/frameworks/python/create-multi-class-api).\n\n Whether you create a separate module for the `endpoints.api_server` object\n depends on whether you created a single API or multiple APIs.\n - If you created multiple APIs (using multiple `remote.Service`\n subclasses) that are defined in multiple files, then we recommend that\n you create a separate module for the `endpoints.api_server` object so\n that you can import all the class files.\n\n - If you created a single API, you can add the required\n `endpoints.api_server` code to the module where you define your API\n because you don't need to import any other classes.\n\n | **Warning:** if your code doesn't call `endpoints.api_server`, you will get a deployment failure when you try to deploy.\n2. In your `app.yaml` file, map the web server you just created to\n the Cloud Endpoints location as follows:\n\n handlers:\n # The endpoints handler must be mapped to /_ah/api.\n - url: /_ah/api/.*\n script: main.api\n\n where `main` is the Python module you in which you defined the\n `endpoints.api_server` object.\n\nServing your API from a different path\n--------------------------------------\n\nOptional: To serve your API from a different path, for example `/api/`:\n\n1. Modify the decorator:\n\n @endpoints.api(name='echo', version='v1', base_path='/api/')\n\n2. Change the `handlers` section in the `app.yaml` file:\n\n handlers:\n - url: /api/.*\n script: main.api\n\nLogging in Endpoints Frameworks for Python\n------------------------------------------\n\nEndpoints Frameworks for Python uses the\n[standard Python logging module](https://docs.python.org/2/library/logging.html)\nto log information about\nthe application's status and request lifecycle. To learn more about\nApp Engine logs and how to view them, review\n[Reading and writing application logs](/appengine/docs/standard/python/logs#writing_application_logs)\nin the App Engine documentation.\n\nThe Python logging module provides predefined log levels. In increasing order\nof severity, the log levels are:\n\nLoggers exist in a dot-separated hierarchy. For example, the logger\n`endpoints.api_config` is a child of the logger `endpoints`. This hierarchy\ngives you precise control over which logs are emitted or suppressed. Typically,\nyou only change the two root loggers for Endpoints Frameworks:\n`endpoints` and `endpoints_management`.\n\n### Enable `DEBUG` logging for Endpoints Frameworks\n\nTo avoid overloading the log reader, Endpoints Frameworks sets its\nloggers to only record log entries with the `INFO` log level or higher. At any\ntime after Endpoints Frameworks has been imported into your module,\nyou can change the log level as follows: \n\n import logging\n logging.getLogger('endpoints').setLevel(logging.DEBUG)\n logging.getLogger('endpoints_management').setLevel(logging.DEBUG)\n\nThe `setLevel` method sets the minimum log level for the logger."]]