Колба Python: тот же ответ возвращен для нового запроса - PullRequest
0 голосов
/ 31 октября 2018

Python новичок здесь. У меня есть базовый API Flask для проверки цены и марки автомобиля.

Ожидаемое поведение: Цель состоит в том, чтобы отправить запрос GET на сервер следующим образом:

http://127.0.0.1:5000//EndPoint1?CarMakeModel=ChevySilverado

А в ответе должна возвращаться цена: $ 25000

Если я отправлю второй запрос следующим образом:

http://127.0.0.1:5000//EndPoint1?CarMakeModel=FordPinto

В ответе должна возвращаться цена: $ 5000

Неправильно наблюдаемое поведение: Когда я делаю запрос GET для ChevySilverado (как URL выше), он правильно возвращает 25000 долларов. Но когда я отправляю второй URL для FordPinto, он снова возвращает 25000 долларов вместо 5000 долларов. Он всегда будет повторять $ 25000 в качестве вывода.

Как я могу получить этот код Python для возврата $ 5000, когда я отправляю 'FordPinto' во втором URL-адресе запроса?

Вот код, который я пробовал:

#PriceCheck.py:

from Flask import request
PriceChecker=[]
Price=[]
PriceChecker= request.args.get('CarMakeModel')
if PriceChecker == 'ChevySilverado':
    Price = '$25000'
if PriceChecker == 'FordPinto':
    Price = '$5000'

#Run.py:

from flask import Flask
app = Flask(__name__)
@app.route('/EndPoint1')
def Response():
    from PriceCheck import PriceChecker
    return str(PriceChecker)
if __name__ == '__main__':
    app.run(debug=True)

1 Ответ

0 голосов
/ 01 ноября 2018

Поскольку Price является глобальной переменной модуля, она устанавливается только один раз, когда PriceCheck.py импортируется впервые. Вместо этого вам следует заключить код в PriceCheck.py в функцию, чтобы его можно было вызывать повторно:

Новый PriceCheck.py:

from Flask import request

def check_price():
    PriceChecker= request.args.get('CarMakeModel')
    if PriceChecker == 'ChevySilverado':
        Price = '$25000'
    if PriceChecker == 'FordPinto':
        Price = '$5000'
    # You also need to handle `PriceChecker` being other values!
    return Price

Новый Run.py:

from flask import Flask
from PriceCheck import check_price

app = Flask(__name__)

@app.route('/EndPoint1')
def Response():
    return check_price()

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