Обработка URL, полученного в REST API - PullRequest
0 голосов
/ 01 февраля 2019

Я создал API во Flask, который превращает HTML-страницы через их URL в PDF.Однако всякий раз, когда в URL-адресе есть косая черта, скрипт выводит 404.

, это код -

def api(self):
    app = Flask(__name__)
    @app.route('/api/dodo/<filename>/<url>', methods=['GET', 'POST'])

    def convert(url, filename):
        content = request.json
        outfile = pdfkit.from_url(str(url), filename)
        return jsonify({"url":url, 'filename': filename})

    app.run(debug=True)

, если запрос localhost/api/dodo/filename/google.com, я получаю выходной файл.Но если я отправлю этот запрос

http://localhost/api/dodo/filename/https://dev.bizlem.io:8082/scorpio1/GALBRAITH'S_FUEL_27K-55K_ETA_CENTRAL_MED_LIST_-_14TH_JANUARY_2019_1.html

, я получу 404.

1 Ответ

0 голосов
/ 01 февраля 2019

Насколько я понимаю, это происходит потому, что URL в последнем случае фактически отображается на другую конечную точку.Обратите внимание, что косые черты, добавленные в URL, меняют значение.

Лучший подход состоит в том, чтобы urlencode filename и url параметров и передавать их как параметры GET (Насколько я вижу, / api / dodo - это ваша конечная точка REST API, а filename, urlявляются параметрами).

Код должен выглядеть примерно так:

def api():
    app = Flask(__name__)

    @app.route('/api/dodo', methods=['GET'])
    def convert():
        url = request.args.get('url')
        filename = request.args.get('filename')
        outfile = pdfkit.from_url(url, filename)

        return jsonify({"url":url, 'filename': filename})

    app.run(debug=True)

Тогда URL для доступа к ресурсу будет:

http://127.0.0.1:5000/api/dodo?url=https%3A%2F%2Fdev.bizlem.io%3A8082%2Fscorpio1%2FGALBRAITH%27S_FUEL_27K-55K_ETA_CENTRAL_MED_LIST_-_14TH_JANUARY_2019_1.html&filename=okay

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