如何在Flask中创建服务?

时间:2018-12-11 05:26:08

标签: python flask

我必须使该端点通过我的api或服务进行:加法运算仅返回ab的加法运算以及de除法的相同运算。最后一条路由必须以json格式返回,并带有通过url发送的json。

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。

2 个答案:

答案 0 :(得分:1)

这可能有帮助。

请注意,这是一个POST请求Flask API。

您可以发送自定义数据和所需的任何类型的操作。您可以使用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"
}

免责声明:这可能无法完全回答您的问题,但可以解决您的问题。

答案 1 :(得分:0)

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

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:GetData>
         <!--Optional:-->
         <tem:val>2000</tem:val>
      </tem:GetData>
   </soapenv:Body>
</soapenv:Envelope>