I have two flask endpoints deployed on a machine to get information about folders content:
@app.route('/info', methods=['GET'])
def get_info():
files_number = int(request.args.get('files_number', default=5))
directory = request.args.get('directory', default='C:\Admin')
data = do_something(files_number, directory)
return jsonify(data), 200 if data else 500
@app.route('/file', methods=['GET'])
def get_file():
directory = request.args.get('directory', default='C:\Admin')
file_path = request.args.get('file_path')
data = send_file(file_path, attachment_filename=file_path)
return data, 200 if data else 500
And I also have two endpoints deployed on another machine which has to get information from those two above enpoints and return exactly the same output as those above.
My question is how to write the enpoints. My attempt:
@app.route('/info2', methods=['GET'])
def get_info2():
ip = request.args.get('ip')
port = request.args.get('port')
url = f'http://{ip}:{port}/info'
req = requests.get(url)
if req.status_code == 200:
output = req.json()
return output
return None, 500
@app.route('/file2', methods=['GET'])
def get_file2():
ip = request.args.get('ip')
path = request.args.get('path')
port=5905
url = f'http://{ip}:{port}/file?path={path}'
req = requests.get(url)
if req.status_code == 200:
output = req.json()
return output
return None, 500
The idea is that first two endpoints "talk" to the enpoints from the soceon snippet.
It should go like this:
@app.route('/info1', methods=['GET'])
def get_info1():
ip = str(request.args.get('ip'))
port = int(request.args.get('port'))
url = f'http://{ip}:{port}/info
req = requests.get(url)
if req.status_code == 200:
output = req.json()
return jsonify(output)
else:
return None, 500
@app.route('/info2', methods=['GET'])
def get_():
ip = str(request.args.get('ip'))
port = int(request.args.get('port'))
path = str(request.args.get('path'))
if path:
url = f'http://{ip}:{port}/file?html_path={path}'
req = requests.get(url)
if req.status_code == 200:
return redirect(url)
else:
return None, 500