Adding API Endpoints
Adding an API endpoint to a FlaskApp application requires two things:
A Python function to respond to an API request
A specification to tell the application what the endpoint is, and where to handle requests
The Python functions are regular functions that you’re already familiar with. The specification is an OpenAPI specification written in a YAML file.
Adding Endpoints
In the previous guide, we added an endpoint to handle requests to the URL /. Here we
will see how to add an endpoint URL named /greet/name that will show the text “Hello, name!”
The openapi.yaml File
Create a new entry nested in paths in the app/openapi.yaml file.
paths:
   ...
   /greet/{name}:
      get:
         description: Say "Hello, name!"
         parameters:
            - in: path
            name: name
            schema:
               type: string
            required: true
            description: The name to greet
         operationId: app.greet.get
         responses:
            "200":
            content:
               application/json:
                  schema:
                  type: string
            description: Said "Hello, name!" successfully
There is a little bit more going on here. Because we want to greet someone other than “world,”
this specification states there is a parameter name that is a string in the path. Otherwise,
this matches the URL endpoint specification for /.
The Endpoint Handler
Just like app.root.get, we need to create a Python module and method matching the operationId.
Create the file app/greet.py with this content.
import re
def get(name: str):
   name_safe = re.sub(r"[^a-zA-Z0-9]", "", name)
   return f"Hello, {name_safe}!"
Important
Never trust input in your application! Here, we ensure that the name we display only contains alphanumeric characters. Otherwise, we could end up with an XSS vulnerability or worse!
Now we can start our application and visit http://localhost:5000/greet/example to see “Hello, example!”