.. _how-pygeoapi-works:

How pygeoapi works
==================

pygeoapi is a Python-based HTTP server implementation of the OGC API standards.  As a server
implementation, pygeoapi listens to HTTP requests from web browsers, mobile or desktop applications
and provides responses accordingly.

.. image:: /_static/how-pygeoapi-works.png
   :scale: 70%
   :alt: how pygeoapi works
   :align: center

At its core, pygeoapi provides a core Python API that is driven by two required YAML configuration
files, specified with the following environment variables:

- ``PYGEOAPI_CONFIG``: runtime configuration settings
- ``PYGEOAPI_OPENAPI``: the OpenAPI document autogenerated from the runtime configuration

.. seealso::
   :ref:`configuration` for more details on pygeoapi settings

The core Python API provides the functionality to list, describe, query, and access geospatial
data.  From here, standard Python web frameworks like `Flask`_, `Django`_ and `Starlette`_ provide the
web API/wrapper atop the core Python API.

.. note::
   pygeoapi ships with Flask and Starlette as web framework options.

.. _`Flask`: https://flask.palletsprojects.com
.. _`Django`: https://www.djangoproject.com
.. _`Starlette`: https://www.starlette.io
