Как вернуть переданный переменный параметр url в json - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение для колб. Я хочу, чтобы записать параметры переменной, переданные через конечную точку URL-адреса, во внешний файл.

Я попытался записать его во внешний файл, но имя, переданное в конечной точке URL, не печатается во внешнем файле. Пожалуйста, предложите способ, чтобы исходящий файл мог динамически изменяться при передаче конечной точки переменной

from flask import Flask, jsonify
import json
import uuid 


app = Flask(__name__)


@app.route('/<string:name>')
def get_stats(name):
    proceuudi = uuid.uuid4()

    stat = [
        {
            'process_id': str(proceuudi),
            'process_name': 'name' 
        }
    ]

    with open('data.txt', 'w+') as f:  # writing JSON object
        json.dump(stat, f)
    return jsonify({'stats':stat})
app.run(port = 8500)

При нажатии на ссылку http://127.0.0.1:2700/generate Вывод, который я получаю в outfile:

[{"process_name": "favicon.ico", "process_id": "82daa01c-bb2d-444c-9b44-a8880200cb2a"}]

Здесь «имя_процесса» должно быть сгенерировано как переданное в параметре URL. Но я получаю favicon.ico

1 Ответ

0 голосов
/ 03 апреля 2019

Веб-браузер вызывает это.Вы должны попробовать использовать pdb и установить трассировку, как показано ниже:

from flask import Flask, jsonify
import json
import uuid 
import pdb

app = Flask(__name__)


@app.route('/<string:name>')
def get_stats(name):
    proceuudi = uuid.uuid4()

    stat = [
        {
            'process_id': str(proceuudi),
            'process_name': name 
        }
    ]

    with open('data.txt', 'w+') as f:  # writing JSON object
        pdb.set_trace()
        json.dump(stat, f)
    return jsonify({'stats':stat})
app.run(port = 8500)

Веб-браузер делает это.Вы используете веб-браузер для отправки запроса на ваш сервер Flask dev.При настройке вашего кода файл data.txt действительно получает правильный вывод - но этот вывод почти сразу же перезаписывается, потому что веб-браузер автоматически отправляет запрос на сервер, чтобы получить значок длястраница интернета.Веб-браузеры на основе Webkit / Blink делают это.

Это вывод из командной строки, когда я делаю запрос в своем веб-браузере (Chrome) на сервер.Все, что я делаю, это посещаю ссылку: http://127.0.0.1:8500/cat

Но мой веб-браузер также автоматически делает запрос на значок веб-страницы.

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:8500/ (Press CTRL+C to quit)
127.0.0.1 - - [02/Apr/2019 22:15:14] "GET /cat HTTP/1.1" 200 -
127.0.0.1 - - [02/Apr/2019 22:15:14] "GET /favicon.ico HTTP/1.1" 200 -

См.что второй запрос?Второй запрос GET для 'favicon.ico'?Мой веб-браузер сделал это автоматически.Это веб-браузер, который пытается автоматически захватить маленький значок для отображения в строке меню вкладки вашего веб-браузера для этой веб-страницы.Попробуйте использовать программу командной строки, такую ​​как wget , чтобы сделать HTTP-запрос к вашему серверу.Вы можете попробовать что-то вроде этого в командной строке (например, в Linux):

wget http://127.0.0.1:8500/cat

Мы используем программу командной строки, такую ​​как wget, потому что она будет только строго отправлять HTTP-запрос, который вы ему сообщаете.Это не похоже на веб-браузер, который делает что-то за кулисами.

Если вы используете wget для проверки этого, ваш файл data.txt выглядит следующим образом:

[{"process_id": "30423bad-7640-441e-b608-f77f4420d07e", "process_name": "cat"}]

Ваш веб-браузер отправляет запрос на избрание этой страницы, поскольку считает, что это обычная веб-страница.

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