'How to trigger a function in a Python REST API

I have a local Flask REST API that runs some queries and return JSON responses. My idea is to send a POST request to the API and trigger a function capable of updating my database.

The inspiration behind this idea is the way we create resources in a public Cloud. Example: let's say we create a Virtual Cloud Network on any public cloud. The cloud architecture has several APIs for each module and the creation of a VCN trigger the creation of NAT Gateways, Route Tables, Security Lists, Subnets and so on through a GET or POST request to each resource type.

So inspired by this architecture, I want to do this in a simplified and local manner. My first guess is to use the multiprocessing library to spawn processes as soon as a request hits the endpoint, but I don't know if this the best way or a good practice. Can anyone give me an idea on how to do this or if I am in the right path.



Solution 1:[1]

i dont really understand... but i can try to help you, the following code is a code that is the same API but you can get different responses, i dont know what are you going to do with so i added my own examples.

from flask import *
app = Flask(__name__)



@app.route('/api/route/1', methods=['POST'])
def api_1():
    if request.method == 'POST':
        # Some code here 
        #Eg:
        # data = request.get_json()
        # print(data)
        #return data.thing

        #OR

        return "Hello from route 1"

@app.route('/api/route/2', methods=['POST'])
def api_2():
    if request.method == 'POST':
        # Some code here 
        #Eg:
        # data = request.get_json()
        # print(data)
        #return data.thing

        #OR

        return "Hello from route 2"
@app.route('/api/route/3', methods=['POST'])
def api_3():
    if request.method == 'POST':
        # Some code here 
        #Eg:
        # data = request.get_json()
        # print(data)
        #return data.thing

        #OR

        return "Hello from route 3"



if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8000, debug=True)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 NOT kar1m yt