Как я могу создать сервис во Flask? - PullRequest
0 голосов
/ 11 декабря 2018

Я должен сделать это конечными точками для моего API или службы: сложение просто возвращает сложение a и b и то же самое с разделением de.Последний маршрут должен возвращаться в формате 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.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Вы можете создать маршрут, который принимает два значения вместе с желаемым типом операции:

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))})
0 голосов
/ 11 декабря 2018

Это может помочь.

Обратите внимание, что это 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"
}

Отказ от ответственности: Это не может точно ответить на ваш вопрос, но решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...