Как принять пустой URL-маршрут в колбе? - PullRequest
0 голосов
/ 11 мая 2019

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

Для начала я сделал следующий сервер во Flask

from flask import Flask

app = Flask(__name__)


@app.route("/" ,methods=['GET', 'POST', 'DELETE', 'PATCH'])
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000)

Я получил ошибку 308:

error 308

Затем я воспользовался следующим подходом универсального URL, чтобы помочь своему делу.

from flask import Flask

app = Flask(__name__)


@app.route("/", defaults={"path": ""},methods=['GET', 'POST', 'DELETE', 'PATCH'])
@app.route("/<string:path>",methods=['GET', 'POST', 'DELETE', 'PATCH'])
@app.route("/<path:path>",methods=['GET', 'POST', 'DELETE', 'PATCH'])
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000)

Но все равно я получаю ту же ошибку:

the error

1 Ответ

0 голосов
/ 11 мая 2019

Поскольку у меня еще нет 50 репутации, я не могу комментировать, поэтому я оставлю это здесь.

Вы хотите использовать переменную пути для маршрутов:

"AПростой способ создать функцию Catch-All, которая обслуживает каждый URL, включая /, состоит в том, чтобы связать два фильтра маршрутов: один для корневого пути '/' и один, включающий заполнитель пути для остальных.

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

from flask import Flask
app = Flask(__name__)

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
    return 'You want path: %s' % path

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

% curl 127.0.0.1:5000          # Matches the first rule
You want path:  
% curl 127.0.0.1:5000/foo/bar  # Matches the second rule
You want path: foo/bar

http://flask.pocoo.org/snippets/57/

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