如何在Flask创建服务



我必须让这个端点成为我的api或服务的端点:addition只返回ab的加法,与de-division相同。最后一个路由必须以json格式返回,json是通过url发送的。

addition/{a}/{b}division/{a}/{b}url/json

如何使用这种方式从URL中获取多个参数。我已经知道这条路了->

@app.route('/api/addition/', methods=['GET'])
def add():
a = request.args.get('a')
b = request.args.get('b')
(... some stuff ...)

还有别的办法吗?

谢谢你的帮助,很抱歉英语不是我的第一语言,也许我犯了一些语法错误。对此我深表歉意。viviramji。

这可能会有所帮助。

请注意,这是POST请求FlaskAPI

您可以发送任何类型的自定义数据和操作。您可以使用postman测试以下代码。确保从postman发送的原始数据是application/json类型。

from flask import Flask, url_for, json,request, Response, jsonify
app = Flask(__name__)
@app.route('/api/addition/', methods=['POST'])
def add():
requestJson = request.json

print(requestJson)
val1 = requestJson['val1']
val2 = requestJson['val2']
operation = requestJson['operation']
respDict = {"Message":None,"Value":None}
if operation.lower() == "addition":
val = val1 + val2
respDict['Message']="addition"
if operation.lower() == "division":
respDict['Message']="division"
val = val1/val2

respDict['Value']=val
resp = Response(json.dumps(respDict), status = 200)
return resp
import sys
if __name__ == '__main__':
if(len(sys.argv) > 1):
portString = sys.argv[1]
else:
portString = "5200"
app.run(
host = "0.0.0.0",
port=int(portString),
debug=True,
threaded = True)

这是requestJson

{
"val1":3,
"val2":2,
"operation":"addition"
}

免责声明:这可能不能完全回答你的问题,但解决了你的问题。

您可以创建一个接受这两个值以及所需操作类型的路由:

import operator
@app.route('/api/<operation>/<a>/<b>', methods=['GET'])
def perform_operation(operation, a, b):
_ops = {'addition':operator.add, 'subtraction':operator.sub, 'multiplication':operator.mul, 'division':operator.truediv}
if operation not in _ops:
return flask.jsonify({'success':False})
return flask.jsonify({'success':True, 'result':_ops[operation](float(a), float(b))})

最新更新