Невозможно отправить POST-запрос от почтальона в API, созданный с помощью Flask - PullRequest
1 голос
/ 21 марта 2019

Привет, я новичок в написании веб-API на Python. И мое понимание REST ограничено

У меня есть простой Flask API, который принимает python dict {'pdf': pdf_as_bytes, 'filename': string}

Ниже приведен мой серверный скрипт:

@app.route("/predict", methods=["POST"])
def predict():
    data = {"success": False}
    if flask.request.method == "POST":
        pdf = flask.request.files["pdf"].read()
        filename = flask.request.files["filename"].read().decode("utf-8")
        assert isinstance(filename, str), "Got {}".format(type(filename))
        assert isinstance(pdf, bytes), "Got {}".format(type(pdf))
        # further processing happens and returns a json

Это работает как задумано, когда я пишу клиент Python следующим образом:

import requests
import os

ip = "localhost" 
port = 8605 

url = "http://{}:{}/predict".format(ip,port)

path_to_pdf = "./617339931.pdf"

with open(path_to_pdf, "rb") as f:
    pdf = f.read() # pdf is a bytes

# the payload must have the following fields: "pdf": bytes, "filename": string object
payload = {"pdf":pdf,"filename":os.path.basename(path_to_pdf).split(".")[0]}

# post request

result =  requests.post(url=url, files=payload).json()

# the resulting json always has a field called as success, which returns True or False accordingly
if result["success"] == True:
    print(result["data"].keys())

Но, когда я отправляю запрос с помощью Почтальона, я получаю 400 Ошибка! Ниже приведен скриншот ошибки

enter image description here

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

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