嗨,我是第一次使用python编写Web API。而且我对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错误!下面是错误的屏幕截图

python - 无法将 postman 的POST请求发送到使用Flask制作的API-LMLPHP

我不明白如何更改服务器代码,使其与Postman和Python客户端程序一起使用

最佳答案

我只是做了同样的事情,我想这是因为您在关键和价值中加上了双引号,请尝试将其删除。

关于python - 无法将 postman 的POST请求发送到使用Flask制作的API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55274802/

10-10 21:51
查看更多