Flask URL запроса маршрутизации на основе тела запроса? - PullRequest
0 голосов
/ 05 апреля 2020

Как я могу направить запрос на основе тела запроса в flask? Я думаю, что могу использовать redirect, но я предпочитаю не использовать это и направлять запрос немедленно на основе содержимого тела.

Вот что я пробовал, но не получилось:

# I am using Flask-restful extension
from flask import Flask, request
from flask_restful import Resource, Api

class RouteA:
    def post(self):
        return {'route': 'RouteA'}
class RouteB:
    def post(self):
        return {'route': 'RouteB'}

app = Flask(__name__)
api = Api(app) # This is just flask-restful app wrapper extension

# I am trying to use before_request
@app.before_request
def routing():
    request_body = request.get_json(force=True)
    type = request_body.get('type', None)
    if type and type == 'RouteB':
        # somehow direct to routeB
        request.path = '/jobs/routeb'
        # I can do this too but I prefer direct routing rather than redirecting
        # return redirect(location='jobs/routeb', code=307)


# routing here
api.add_resource(RouteA, '/jobs')
api.add_resource(RouteB, '/jobs/routeb')

if __name__ == '__main__':
    app.run(debug=True)

Как я сделаю запрос к этой конечной точке:

import requests

url = 'http://localhost:5000/jobs'

payload = {
    'type': 'RouteB'
}

r = requests.post(url=url, json=payload)
response = r.json()
print(response)
# Expecting:
# {'route': 'RouteB'}
...